VnReview
Hà Nội

Trình duyệt web của bạn dùng engine nào, và tại sao nó lại quan trọng?

Có lẽ bạn đã nghe rằng Microsoft đang xây dựng lại trình duyệt Edge từ đầu, nhưng lần này họ sử dụng mã nguồn Chromium vốn cũng được sử dụng bởi đối thủ Google Chrome. Về cơ bản, Microsoft đang chuyển sang một engine kết xuất trình duyệt hoàn toàn mới.

engine

Nhưng chính xác thì engine là gì? Và nó ảnh hưởng đến trải nghiệm duyệt web của bạn như thế nào?

Khi bạn chọn một trình duyệt web, bạn cũng sẽ chọn một engine trình duyệt và một engine kết xuất - đôi lúc hai thuật ngữ này được dùng riêng biệt, và đôi lúc chúng là cùng một thứ. Về mặt kỹ thuật, engine kết xuất sẽ dựng nên trang web, và engine trình duyệt đảm nhiệm việc phối hợp giữa engine kết xuất và giao diện người dùng của trình duyệt.

Như đã nói, không phải ai cũng phân biệt được giữa hai khái niệm này, đó là chưa kể còn một khái niệm khác là engine Javascript dùng để xử lý mã của website nữa - nhưng để đơn giản hóa mọi chuyện, chúng ta sẽ "học theo" Wikipedia và sử dụng thuật ngữ "engine trình duyệt" làm một thuật ngữ chung. Engine trình duyệt, engine kết xuất, và engine Javascript về cơ bản đều làm việc cùng nhau để chuyển mã web thuần sang một dạng nội dung xem được và tương tác được bên trong trình duyệt web của bạn.

Có 3 engine chính được đề cập trong bài viết này: WebKit (dùng trong Safari), Gecko (dùng trong Firefox), và Blink (dùng trong Chrome, Opera, Brave, và nhiều trình duyệt khác). Ở đây chúng ta sẽ không đi vào chi tiết về Chromium, bởi nó không được xem là một engine; thay vào đó, nó là cầu nối giữa Blink và trình duyệt Google Chrome hoàn chỉnh (hoặc trình duyệt Microsoft Edge mới): một trình duyệt tối giản, mã nguồn mở mà các nhà phát triển có thể dựa vào đó để xây dựng các trình duyệt của riêng họ.

Engine trình duyệt là gì?

firefox

Trình duyệt Firefox trên desktop

Chính xác thì engine trình duyệt là gì? Nhiệm vụ của các engine này là đọc mã HTML, CSS, và các mã khác của một trang web - chính là những nội dung mà bạn thấy trong mã nguồn trang web hay khi mở trang web trong một trình soạn thảo văn bản, có chức năng thiết lập bố cục, nội dung và tạo kiểu của trang - sau đó chuyển nó thành thứ mà bạn thấy trên màn hình khi lướt web.

Có thể nói engine giống như một người phiên dịch, biến mã thuần mà bạn không thể hiểu được thành một trang web đẹp đẽ chứa văn bản và hình ảnh. Engine trình duyệt thực hiện những lựa chọn liên quan cách diễn dịch nội dung nhà phát triển web gõ ra, quyết định những dòng mã cụ thể sẽ ảnh hưởng đến những thứ hiển thị trên màn hình ra sao.

Trên thực tế, bạn có thể xem engine trình duyệt là thành phần quan trọng nhất của trình duyệt, giống như động cơ xe hơi là thành phần quan trọng nhất trên chiếc xe vậy. Mọi thứ khác - menu, phần mở rộng, tìm kiếm thông minh, tự động điền - đều là thừa thãi nếu bạn không thể xem website mình muốn một cách chính xác được.

safari

Trình duyệt Safari trên macOS

Vậy tại sao chúng ta lại cần đến những engine khác nhau? Các lập trình viên khác nhau có những ý tưởng khác nhau về cách tốt nhất để một engine trình duyệt thực hiện công việc của nó - từ hiển thị màu sắc, tối ưu hóa mã, làm mới trang... Google từng tung ra Blink như một engine riêng biệt hồi năm 2013 nhằm cải thiện những điểm yếu trong việc xử lý đa quy trình của engine WebKit.

Giả dụ bạn muốn giới thiệu một phương thức mới, tiên tiến để các nhà phát triển web có thể hiển thị video nhúng bên trong văn bản trên một trang web chẳng hạn. Để có thể thực hiện điều đó, bạn cần sự hỗ trợ từ một engine trình duyệt - trong trường hợp engine đó không đáp ứng được nhu cầu của bạn, và rất nhiều kỹ sư phần mềm đồng ý với phương thức của bạn, có lẽ bạn nên cân nhắc tạo ra engine trình duyệt của riêng mình. Đây chính là những gì từng diễn ra trong quá khứ và tạo nên cục diện engine trình duyệt hiện nay (tuy nhiên, khả năng sẽ có một engine mới xuất hiện trong tương lai là cực thấp, sự thất bại của Microsoft Edge cũ đã chứng minh điều đó).

Engine trình duyệt là lý do chính khiến các trang web đôi lúc hiển thị, nạp, và hoạt động khác nhau trên các trình duyệt khác nhau - và sự khác nhau đó xuất phát từ Gecko, WebKit, và Blink, chứ không phải xuất phát từ Firefox, Safari, và Chrome. Khi mà web dần tiến hóa, sự khác biệt về mặt thị giác (tức cách hiển thị trang web) dần ít đi, và sự khác biệt về mặt công nghệ bên dưới mỗi engine dần tăng lên.

Các engine trình duyệt khác nhau như thế nào?

firefox

Firefox đang phát triển engine mới mang tên Quantum

Mọi thành phần trong quá trình dựng hình trang web và cách xử lý tương tác người dùng đều được thực hiện bởi engine trình duyệt, và dù mỗi engine thực hiện quá trình xử lý theo cách tương tự nhau, vẫn có những khác biệt. Ví dụ, trong cách xử lý bảo mật của các ứng dụng web - đây là thứ mà mỗi engine trình duyệt có thể có những hướng tiếp cận khác nhau.

Khi mà web, và các trang cũng như các ứng dụng trên đó, trở nên ngày một phức tạp hơn, các engine trình duyệt cũng phải xử lý nhiều mã hơn - các trang web hiện nay không còn là các trang tĩnh như ở thời kỳ đầu khi các trình duyệt mới được phát minh ra nữa. Cách xử lý và tối ưu mã động này là một yếu tố khác cho thấy sự khác biệt giữa các engine, và có tác động lên tốc độ hiển thị một trang web (đây là lúc engine JavaScript đóng vai trò quan trọng).

Các kỹ sư Firefox hiện đang phát triển một bản cập nhật cho Gecko với tên gọi Quantum, tập trung vào những vấn đề mới nổi trong web hiện đại:; cách thức làm mới các ứng dụng web, cách thức trình duyệt xử lý core time của bộ nhớ và CPU, và cách thức nó phản ứng với những lần hệ thống bị treo...

google

Google thường xuyên thử nghiệm những công nghệ web mới trên trang web Chrome Experiements

Một engine có nên hỗ trợ các chuẩn web cũ và bỏ ra vài mili-giây để kiểm tra chúng hay không? (Đây là lý do tại sao Microsoft lại phát triển Edge 1.0) Liệu nó có dựng hình văn bản trước sau đó mới nạp hình ảnh? Các quy trình trong các tab nên được xử lý cùng lúc như thế nào? Sự khác biệt chính giữa các engine trình duyệt lớn ngày nay chủ yếu nằm ở những câu hỏi khó như thế này, chứ không còn nằm ở các xử lý web font và âm thanh nhúng nữa.

Cùng với các chuẩn web hiện tại, các engine trình duyệt còn cần phải hỗ trợ những chuẩn mới trong bối cảnh Internet ngày một phức tạp hơn. Đây là một khía cạnh khác mà Blink có ưu thế không thể tranh cãi - rõ ràng, với việc Google đang phát triển rất nhiều ứng dụng web tiên tiến, Blink sẽ là engine trước tiên được nâng cấp để thúc đẩy những chuẩn mới mà chủ nhân của nó sử dụng.

Ngoài ra, còn có những vấn đề khác, nhưng nếu bạn không phải là nhà phát triển, bạn sẽ không để ý thấy, và cũng không nên để ý làm gì. Ví dụ: mã có thể được thêm vào và chứng nhận nhanh đến mức nào, quy trình khắc phục lỗi, engine trình duyệt liên kết với bản thân trình duyệt chặt chẽ ra sao...

Engine trình duyệt nào tốt nhất?

blink

Blink - một phần của dự án Chromium

Sau khi xem xét mọi thứ, có một câu hỏi đặt ra là: bạn có nên tiếp tục dùng engine trình duyệt hiện tại, hay nên chuyển sang một engine khác? Như đã nói, ở cấp độ cơ bản, ở thời điểm hiện tại, sự khác biệt giữa chúng là không lớn - Chrome (Blink), Firefox (Gecko) và Safari (WebKit) đều dựng hình hầu hết các website theo những cách rất giống nhau ở những tốc độ rất giống nhau.

Đó là bởi hiện nay, chúng đều chấp nhận những chuẩn web cơ bản như nhau (có một kẻ ngoại đạo, đó là...Internet Explorer). Không có tính năng đáng chú ý nào có thể khiến bạn bỗng nhiên rời bỏ WebKit và chuyển sang Gecko hay ngược lại cả.

Nhưng đời luôn có kẻ mạnh kẻ yếu, và nếu xét dưới góc nhìn đó, thì Blink là engine trình duyệt tốt nhất hiện nay (chẳng lạ khi Microsoft cũng vừa chuyển sang dùng Blink). Nó dựng hình trang web và ứng dụng web nhanh, các bản cập nhật được tung ra liên tục, nó có nhiều tính năng mạnh mẽ, và lỗi thì được vá rất nhanh. Từ quan điểm của Microsoft, xây dựng một trình duyệt mới trên nền Blink cũng dễ dàng nhất, và nó hoạt động tốt nhất khi nhúng vào các ứng dụng desktop. Điểm trừ của nó là "ăn" khá nhiều bộ nhớ trong một số tình huống và ngày càng có nhiều thứ thừa thãi hơn.

chrome

Một trong những ưu điểm của Chrome là tốc độ cập nhật cực nhanh

Với bản nâng cấp Quantum, Firefox tiếp tục gây ấn tượng và đang thực hiện được những cải tiến thực sự về mặt tốc độ. WebKit của Apple, dù bị gièm pha, nhưng Safari vẫn ngày một tốt hơn trên macOS và iOS (chủ yếu vì những tính năng được tích hợp trên nền engine trình duyệt). Những khác biệt hiện hữu trong các engine trình duyệt này dường như không có tác động lớn đến người dùng cuối, do đó bạn có thể tiếp tục sử dụng trình duyệt mình yêu thích.

Sự thống trị của Blink có thể gây ra hiệu ứng tiêu cực đối với tất cả chúng ta: phương thức các công nghệ trình duyệt được sử dụng trong tương lai, và những trình duyệt nào sẽ ngã ngựa. Ở thời điểm hiện tại, các kỹ sư Google muốn và thực sự đang kiểm soát phương thức web hoạt động đối với đại đa số người dùng. Nói cách khác, mối nguy hiểm chính là bạn sẽ thấy rất nhiều những nội dung thông báo như "trang web này hoạt động tốt nhất với Chrome".

Với việc các kỹ sư Microsoft nay cũng chuyển sang dùng Chromium, thì mối nguy hiểm đó có thể giảm đi phần nào, và hãng cũng khẳng định sẽ cùng Google duy trì tính mở của web, đảm bảo quá trình phát triển đang thực hiện là một nỗ lực cộng tác của cả hai. với chúng ta, hãy nhớ kỹ rằng khi sử dụng web, bạn không chỉ chọn trình duyệt, bạn còn phải chọn engine đang chạy bên dưới trình duyệt đó nữa.

Minh.T.T

Chủ đề khác