Chrome và Firefox sắp đạt đến phiên bản lớn 100

Những thay đổi về chuỗi tác nhân người dùng, những chiến lược mà Chrome và Firefox đang áp dụng để giảm thiểu tác động và những việc bạn có thể làm để trợ giúp.

ChromeFirefox sẽ đạt phiên bản 100 sau vài tháng nữa. Điều này có khả năng gây ra sự cố trên những trang web dựa vào việc xác định phiên bản trình duyệt để thực hiện logic nghiệp vụ. Bài đăng này đề cập đến tiến trình của các sự kiện, các chiến lược mà Chrome và Firefox đang thực hiện để giảm thiểu tác động cũng như cách bạn có thể trợ giúp.

Chuỗi tác nhân người dùng

Tác nhân người dùng (UA) là một chuỗi mà trình duyệt gửi trong tiêu đề HTTP, để máy chủ có thể xác định trình duyệt. Bạn cũng có thể truy cập chuỗi này thông qua JavaScript bằng navigator.userAgent. Thông số này thường có định dạng như sau:

<browser_name>/<major_version>.<minor_version>

Ví dụ: các phiên bản phát hành mới nhất của các trình duyệt tại thời điểm xuất bản bài đăng này là:

  • Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
  • Firefox: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
  • Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15

Phiên bản lớn 100 — số phiên bản gồm 3 chữ số

Phiên bản lớn 100 là một cột mốc lớn đối với cả Chrome và Firefox. Mã này cũng có khả năng gây ra lỗi trên các trang web khi chúng ta chuyển từ số phiên bản 2 chữ số sang số phiên bản gồm 3 chữ số. Nhà phát triển web dùng mọi loại kỹ thuật để phân tích cú pháp các chuỗi này, từ mã tuỳ chỉnh cho đến việc sử dụng thư viện phân tích cú pháp Tác nhân người dùng. Sau đó, hệ thống có thể dùng thư viện này để xác định logic xử lý tương ứng. Tác nhân người dùng và mọi cơ chế báo cáo phiên bản khác sẽ sớm báo cáo số phiên bản gồm ba chữ số.

Tiến trình của phiên bản 100

Trình duyệt phiên bản 100 sẽ được phát hành đầu tiên dưới dạng phiên bản thử nghiệm (Chrome Canary, Firefox Nightly), sau đó là phiên bản beta và cuối cùng là trên kênh ổn định.

Trình duyệt Lịch trình
Chrome (lịch phát hành) Ngày 29 tháng 3 năm 2022
Firefox (lịch phát hành) Ngày 3 tháng 5 năm 2022

Tại sao số phiên bản gồm ba chữ số lại có thể gây ra sự cố?

Cách đây hơn 12 năm, khi trình duyệt lên phiên bản 10 lần đầu tiên, nhiều vấn đề đã được phát hiện với các thư viện phân tích cú pháp Tác nhân người dùng vì số phiên bản chính đã tăng từ 1 lên 2.

Khi không có quy cách chung, các trình duyệt khác nhau sẽ có các định dạng khác nhau cho chuỗi Tác nhân người dùng và quá trình phân tích cú pháp Tác nhân người dùng theo trang web cụ thể. Có thể một số thư viện phân tích cú pháp có thể có lỗi hoặc giả định được mã hoá cứng mà không tính đến số phiên bản lớn gồm ba chữ số. Nhiều thư viện đã cải thiện logic phân tích cú pháp khi trình duyệt chuyển sang số phiên bản 2 chữ số. Vì vậy, việc đạt đến mốc 3 chữ số dự kiến sẽ gây ra ít sự cố hơn. MikeTaylor, một kỹ sư của nhóm Chrome, đã thực hiện một cuộc khảo sát về các thư viện phân tích cú pháp UA phổ biến và không phát hiện ra vấn đề nào. Việc chạy thử nghiệm Chrome trong trường đã phát hiện ra một số vấn đề đang được nghiên cứu.

Các trình duyệt đang làm gì với loại quảng cáo đó?

Cả Firefox và Chrome đều đang chạy thử nghiệm trong đó các phiên bản hiện tại của báo cáo trình duyệt đang ở phiên bản lớn 100 để phát hiện khả năng xảy ra hỏng trang web. Điều này đã dẫn đến một số vấn đề được báo cáo, một số vấn đề trong đó đã được khắc phục. Các thử nghiệm này sẽ tiếp tục chạy cho đến khi phát hành phiên bản 100.

Ngoài ra, còn có các chiến lược giảm thiểu việc sao lưu, trong trường hợp bản phát hành phiên bản 100 lên các kênh ổn định gây ra nhiều thiệt hại cho trang web hơn dự kiến.

Giảm thiểu Chrome

Trong Chrome, kế hoạch sao lưu là sử dụng cờ để đóng băng phiên bản lớn ở 99 và báo cáo số phiên bản lớn thực sự trong phần phiên bản nhỏ của chuỗi tác nhân người dùng (mã đã đã được hạ cánh).

Phiên bản Chrome như được báo cáo trong chuỗi Tác nhân người dùng tuân theo mẫu <major_version>.<minor_version>.<build_number>.<patch_number>.

Nếu gói sao lưu được sử dụng, thì chuỗi Tác nhân người dùng sẽ có dạng như sau:

99.101.4988.0

Chrome cũng đang chạy các thử nghiệm để đảm bảo việc báo cáo giá trị 3 chữ số trong phần phiên bản phụ của chuỗi sẽ không gây ra sự cố, vì phiên bản nhỏ trong chuỗi Tác nhân người dùng của Chrome đã báo cáo giá trị 0 trong một thời gian rất dài. Nhóm Chrome sẽ quyết định xem có dùng lại phương án sao lưu hay không dựa trên số lượng và mức độ nghiêm trọng của các vấn đề đã báo cáo.

Giảm thiểu Firefox

Trong Firefox, chiến lược này sẽ phụ thuộc vào mức độ quan trọng của sự cố. Firefox có cơ chế can thiệp trang web. Nhóm Mozilla webcompat có thể khắc phục nóng các trang web bị hỏng trong Firefox bằng cơ chế này. Nếu nhập about:compat vào thanh URL của Firefox, bạn có thể thấy vấn đề hiện đang được khắc phục. Nếu trang web bị lỗi với phiên bản lớn là 100 trên một miền cụ thể, bạn có thể khắc phục bằng cách gửi phiên bản 99.

Nếu lỗi trên diện rộng, bạn có thể đóng băng số phiên bản lớn. Sau đó, có thể có nhiều chiến lược khác nhau, mỗi chiến lược đều có ưu và nhược điểm riêng. Mozilla có thể gửi số phiên bản thực dưới dạng số phiên bản nhỏ, cố định chuỗi hoàn toàn nguyên trạng hoặc gửi số phiên bản thực thông qua các tham số khác.

Mọi chiến lược làm tăng thêm độ phức tạp cho chuỗi tác nhân người dùng đều có tác động mạnh mẽ đến hệ sinh thái. Hãy cùng hợp tác để tránh thêm một hành vi độc đáo khác.

Bạn có thể làm gì để trợ giúp?

Trong Chrome và Firefox Nightly, bạn có thể định cấu hình trình duyệt để báo cáo phiên bản là 100 ngay bây giờ, cũng như báo cáo mọi vấn đề bạn gặp phải.

Định cấu hình Chrome để báo cáo phiên bản chính là 100

  1. Chuyển đến chrome://flags/#force-major-version-to-100.
  2. Đặt tuỳ chọn thành Enabled.

Định cấu hình Firefox Nightly để báo cáo phiên bản chính là 100

  1. Mở trình đơn Settings (Cài đặt) của Firefox Nightly.
  2. Tìm kiếm "Firefox 100" rồi chọn tuỳ chọn "Firefox 100 User-AgentString".

Thử nghiệm và gửi báo cáo

  • Nếu bạn là nhà bảo trì trang web, hãy kiểm thử trang web trên Chrome và Firefox 100. Xem lại mã phân tích cú pháp và thư viện của tác nhân người dùng, đồng thời đảm bảo chúng có thể xử lý các số phiên bản gồm ba chữ số. Chúng tôi đã biên dịch một số mẫu hiện đang bị lỗi.
  • Nếu bạn phát triển thư viện phân tích cú pháp Tác nhân người dùng, hãy thêm các thử nghiệm để phân tích cú pháp các phiên bản lớn hơn và bằng 100. Các thử nghiệm ban đầu của chúng tôi cho thấy rằng các phiên bản thư viện gần đây có thể xử lý đúng cách. Tuy nhiên, web có một nền tảng lâu dài, vì vậy, nếu bạn có các phiên bản thư viện phân tích cú pháp cũ, thì đã đến lúc kiểm tra xem có vấn đề gì không và cuối cùng là nâng cấp.
  • Nếu bạn đang duyệt web và nhận thấy bất kỳ vấn đề nào với phiên bản lớn 100, hãy gửi báo cáo trên webcompat.com.