Căn chỉnh bộ tính giờ với các quy định hạn chế tách biệt nhiều nguồn gốc

Trước phiên bản 91, độ phân giải của bộ tính giờ trong Chrome bị giới hạn ở mức 5 micrô giây trên máy tính (khi không bật tính năng cách ly trang web và 100 micrô giây trên Android nếu không được bật).

Kể từ phiên bản 91, sau một thay đổi về quy cách, Chrome sẽ hạn chế độ phân giải của các bộ tính giờ rõ ràng (performance.now(), performance.timeOrigin và các API hiệu suất khác hiển thị DOMHighResTimestamps) ở mức 100 micrô giây trên các nền tảng. Bằng cách bật tính năng cách ly nhiều nguồn gốc, các trang web có thể nới lỏng giới hạn xuống 5 micrô giây bất kể nền tảng là gì.

Để có được các tính năng mạnh mẽ hơn khi bật tính năng tách biệt nhiều nguồn gốc, một phương pháp tương tự được áp dụng trên SharedArrayBuffer. Tách biệt nhiều nguồn gốc là trạng thái mà trang web được tách biệt với các nguồn gốc khác, ngoại trừ những nguồn đã chọn sử dụng.

Tôi có cần phải làm gì khác không?

Thường là không. performance.now() đã bị giới hạn ở độ phân giải thô hơn đáng kể trong các trình duyệt khác (ví dụ: 1 mili giây = 0,001 giây), vì vậy, đáng lẽ bạn không nên dựa vào độ phân giải hiện tại.

Đồng thời, nếu muốn hưởng lợi từ độ phân giải cao hơn cho bộ tính giờ, chẳng hạn như để đo lường hiệu suất chính xác hơn, bạn sẽ cần đảm bảo trang web của mình được tách biệt trên nhiều nguồn gốc. Từ đó, bạn sẽ nhận được độ phân giải tốt hơn cả trong Chrome và các trình duyệt dựa trên Chromium khác, cũng như Firefox.

Bộ tính giờ có liên quan gì đến việc tách biệt nhiều nguồn gốc?

Các nhà cung cấp trình duyệt quyết định giới hạn bộ tính giờ ở các độ phân giải thô hơn (cũng như tính sẵn có của SharedArrayBuffers có thể được dùng làm bộ tính giờ ngầm ẩn) khi phát hiện Spectre. Nguyên nhân là do Spectre, cũng như các cuộc tấn công thực thi suy đoán tương tự, dựa vào bộ tính giờ để đo lường thời gian cần thực hiện một số hoạt động nhất định, sau đó đoán nội dung của bộ nhớ của quy trình.

Mặc dù các cuộc tấn công thực thi theo suy đoán có thể được thực thi bằng bộ tính giờ thô, nhưng bộ tính giờ có độ phân giải cao có thể giúp tăng tốc độ. Chrome đã sử dụng cấu trúc cách ly trang web, cũng như các cơ chế khác để giảm thiểu rủi ro và bật lại các chức năng đó, nhưng chỉ giới hạn ở nền tảng máy tính và trình duyệt Chromium. Việc tạo API dựa vào kiến trúc trình duyệt cơ bản không thực sự lý tưởng.

Việc tách biệt nhiều nguồn gốc cung cấp cơ sở tiêu chuẩn để các trình duyệt chạy các trang trong một môi trường riêng biệt để trình duyệt không thể tải những tài nguyên nhiều nguồn gốc ngoài ý muốn, do đó không có nguy cơ gặp rủi ro về Spectre. Nhờ tính năng tách biệt nhiều nguồn gốc, giờ đây, chúng tôi có thể cho phép các trang truy cập vào bộ tính giờ có độ phân giải cao, SharedArrayBuffer và các API khác không an toàn để hiển thị trong các quy trình có thể đọc dữ liệu tuỳ ý trên nhiều nguồn gốc.

Để tìm hiểu thêm về thông tin cơ bản của thay đổi này, hãy đọc bài viết Lý do bạn cần "được tách biệt nhiều nguồn gốc" để có các tính năng hiệu quả.

Ảnh bìa của Linda Perez Johannessen trên Unsplash.