Engine trình duyệt là gì, và Blink, Gecko, WebKit khác nhau ra sao? Xem trình duyệt của bạn thực sự dùng engine nào — và vì sao user-agent có thể nói dối.
Engine trình duyệt là phần mềm bên trong trình duyệt của bạn, biến HTML, CSS và JavaScript của một trang thành những điểm ảnh bạn nhìn thấy và hành vi bạn trải nghiệm. Ngày nay ba engine tiếp sức cho gần như toàn bộ web: Blink (Chrome, Edge và hầu hết các trình duyệt khác), Gecko (Firefox), và WebKit (Safari cùng mọi trình duyệt trên iOS). Engine bạn đang dùng định hình cách các trang web được dựng, những tính năng nào hoạt động, và bạn dễ bị nhận diện đến mức nào — còn chuỗi user-agent tự nhận sẽ cho bạn biết thì lại có thể bị làm giả. Bài hướng dẫn này giải thích từng engine, mối liên hệ giữa chúng, và cách kiểm tra engine thật của bạn.
Engine trình duyệt là gì?
Engine trình duyệt — còn gọi là engine dựng hình (rendering) hay engine bố cục (layout) — là thành phần đọc mã của một trang web và dàn trải nó lên màn hình. Khi bạn mở một trang, engine phân tích HTML thành một cây tài liệu, áp dụng CSS để tạo kiểu và định vị mọi thứ, rồi vẽ ra kết quả. Nó cũng chạy song song với một engine JavaScript riêng biệt vốn thực thi các script của trang.
Hai phần này thường bị nhầm lẫn. Chẳng hạn trong Chrome, Blink là engine dựng hình còn V8 là engine JavaScript, và Chromium là dự án mã nguồn mở gói chúng lại thành một trình duyệt. Firefox ghép Gecko (dựng hình) với SpiderMonkey (JavaScript); Safari ghép WebKit với JavaScriptCore. Khi người ta nói "engine trình duyệt", họ thường muốn nói tới engine dựng hình, vốn là thứ quyết định một trang trông như thế nào.
Blink (Chrome, Edge và hầu hết các trình duyệt)
Blink là engine dựng hình của Google và là engine được dùng rộng rãi nhất với khoảng cách rất lớn. Nó tiếp sức cho Chrome, Microsoft Edge, Opera, Brave, Vivaldi và rất nhiều trình duyệt nền Chromium khác — gộp lại là phần áp đảo của hoạt động duyệt web trên máy tính, vào khoảng ba phần tư thị trường.
Blink nổi tiếng với hiệu năng JavaScript nhanh (nhờ V8), tốc độ tung ra tính năng mới, và mức hỗ trợ nền tảng web rộng, đó là lý do các lập trình viên thường kiểm thử trên nó trước tiên. Mặt trái của sự thống trị đó là làm giảm sự đa dạng về engine: khi một engine kiểm soát phần lớn web, những đặc điểm và quyết định của nó trên thực tế trở thành tiêu chuẩn mặc định, dù các đặc tả chính thức có đồng ý hay không.
Gecko (Firefox)
Gecko là engine dựng hình mã nguồn mở của Mozilla, được Firefox và các phái sinh của nó dùng. Thị phần của nó nhỏ — đại khái ở mức một con số — nhưng vai trò của nó thì lớn hơn nhiều: Gecko là engine độc lập, không phải Chromium, chủ chốt trên máy tính, nên nó giữ cho web không trở thành một thế giới đơn engine.
Gecko chú trọng các tiêu chuẩn web và quyền riêng tư, và cuộc đại tu "Quantum" của Mozilla đã hiện đại hóa hiệu năng cùng khả năng xử lý song song của nó. Đối với lập trình viên, kiểm thử trên Gecko là cách đáng tin cậy nhất để bắt được những chỗ mà một trang web vô tình trở nên phụ thuộc vào hành vi đặc thù của Blink.
WebKit (Safari và mọi trình duyệt iOS)
WebKit là engine của Apple, được xây dựng từ engine KHTML cũ hơn. Nó tiếp sức cho Safari trên macOS và iOS, và được tối ưu cho phần cứng Apple với trọng tâm là hiệu quả pin và sự ổn định. Trên máy tính thị phần của nó khiêm tốn, nhưng trên di động thì rất lớn vì một quy định then chốt.
Trên iOS và iPadOS, mọi trình duyệt đều phải dùng WebKit — kể cả "Chrome" và "Firefox" trên iPhone. Những ứng dụng đó bọc quanh WebKit của Apple chứ không đi kèm Blink hay Gecko, nên trên iPhone bạn luôn chạy WebKit dù bạn chạm vào biểu tượng trình duyệt nào. Đây là lý do một trang web có thể dựng khác nhau giữa Chrome trên iOS và Chrome trên Android dù tên gọi giống hệt.
Blink, Gecko và WebKit — so sánh
| Engine | Nhà sản xuất | Thị phần ước tính | Tiếp sức cho | Nổi tiếng về |
|---|---|---|---|---|
| Blink | ~3/4 trên máy tính | Chrome, Edge, Opera, Brave | Tốc độ, ra tính năng nhanh, sự thống trị | |
| Gecko | Mozilla | một con số | Firefox | Tiêu chuẩn, quyền riêng tư, sự độc lập về engine |
| WebKit | Apple | nhỏ trên máy tính, lớn trên di động | Safari, mọi trình duyệt iOS | Hiệu quả pin, sự ổn định |
Điều rút ra thực tế: hầu hết các trình duyệt "khác nhau" thực ra là cùng một engine Blink khoác những giao diện khác nhau, trong khi Gecko và WebKit là hai lựa chọn thay thế thực sự khác biệt còn lại.
Lịch sử ngắn gọn: KHTML → WebKit → Blink
Ba engine này liên hệ với nhau nhiều hơn vẻ bề ngoài. WebKit ra đời năm 2001 khi Apple tách nhánh (fork) từ KHTML, engine của dự án KDE, để xây Safari. Trong nhiều năm WebKit tiếp sức cho cả Safari lẫn Chrome của Google. Rồi vào năm 2013, Google tách nhánh WebKit để tạo ra Blink, nhằm phát triển engine theo cách riêng của mình. Gecko phát triển tách biệt tại Mozilla (và trước đó là Netscape) suốt thời gian đó.
Vậy nên Blink và WebKit có chung một tổ tiên, đó là lý do đôi khi chúng hành xử giống nhau, trong khi Gecko đến từ một dòng dõi độc lập.
Cách kiểm tra trình duyệt của bạn dùng engine nào
Cách nhanh nhất là chạy công cụ kiểm tra nhân trình duyệt của BrowserInsight, vốn phát hiện engine dựng hình mà trình duyệt của bạn thực sự chạy thay vì tin vào cái tên trên biểu tượng. Sự phân biệt đó quan trọng vì chuỗi user-agent — đoạn văn bản mà trình duyệt gửi đi để tự giới thiệu — cực kỳ dễ chỉnh sửa. Một trình duyệt có thể tuyên bố mình là Chrome trên Windows trong khi thực ra là một thứ hoàn toàn khác.
Đây chính là lý do việc phát hiện engine nhìn vượt qua user-agent để xét hành vi thực của engine: những web API nào tồn tại, một số tính năng được triển khai ra sao, và các dấu hiệu khác vốn khó giả mạo. Nếu bạn muốn hiểu khoảng cách đó bị khai thác và bị phát hiện như thế nào, hãy xem cách phát hiện giả mạo user-agent, và để tìm hiểu sâu hơn về một tín hiệu đặc thù của engine, hãy đọc GPU của bạn tiết lộ danh tính qua WebGL như thế nào.
Câu hỏi thường gặp
Microsoft Edge dùng engine trình duyệt nào?
Edge dùng Blink, cùng engine với Chrome. Microsoft đã khai tử engine EdgeHTML cũ vào năm 2020 và xây lại Edge trên nền Chromium, nên ngày nay Edge và Chrome dựng các trang gần như giống hệt nhau; khác biệt nằm ở giao diện và các dịch vụ tích hợp, chứ không phải ở engine.
Chrome trên iPhone có thực sự là Chrome không?
Không phải theo nghĩa engine. Trên iOS, Apple yêu cầu mọi trình duyệt dùng WebKit, nên "Chrome" và "Firefox" trên iPhone là những lớp giao diện phủ lên engine WebKit của Apple. Chúng đồng bộ dữ liệu của bạn và trông giống các ứng dụng trên máy tính, nhưng việc dựng hình thực tế là WebKit, đó là lý do các trang có thể hành xử khác so với trên Android.
Khác biệt giữa engine trình duyệt và engine JavaScript là gì?
Engine trình duyệt (dựng hình) dàn trải HTML và CSS thành những gì bạn nhìn thấy; engine JavaScript thực thi các script của trang. Chúng phối hợp với nhau nhưng là những thành phần riêng biệt — Blink ghép với V8, Gecko với SpiderMonkey, và WebKit với JavaScriptCore.
Tôi có thể đổi engine của trình duyệt không?
Không thể trong một trình duyệt thông thường — engine được tích hợp sẵn. Lựa chọn thực tế duy nhất của bạn là đổi trình duyệt: chọn một trình duyệt Chromium cho Blink, Firefox cho Gecko, hoặc Safari cho WebKit. Trên iOS lựa chọn này bị loại bỏ hoàn toàn, vì mọi trình duyệt đều dùng WebKit.
Kết luận
Ba engine — Blink, Gecko và WebKit — dựng nên gần như toàn bộ web, và trình duyệt bạn chọn phần lớn là một sự lựa chọn giữa chúng. Blink thống trị, Gecko giữ cho web độc lập, và WebKit ngự trị iOS theo quy định bắt buộc. Biết engine bạn thực sự chạy là điều quan trọng cho cả tính tương thích lẫn quyền riêng tư, và vì user-agent có thể trình bày sai về nó, cách đáng tin cậy duy nhất để biết là phát hiện hành vi thực của engine thay vì tin vào cái tên của nó.
Đọc thêm: