Speculation Rules API
Khả dụng hạn chế
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Speculation Rules API được thiết kế để cải thiện hiệu suất cho các điều hướng trong tương lai. API này nhắm vào URL tài liệu thay vì các tệp tài nguyên cụ thể, do đó phù hợp với ứng dụng nhiều trang (MPA) hơn là ứng dụng một trang (SPA).
Speculation Rules API cung cấp một giải pháp thay thế cho tính năng <link rel="prefetch"> được hỗ trợ rộng rãi và được thiết kế để thay thế tính năng <link rel="prerender"> chỉ dành cho Chrome đã lỗi thời. Nó cung cấp nhiều cải tiến so với các công nghệ này, cùng với cú pháp biểu đạt và có thể cấu hình hơn để chỉ định tài liệu nào nên được prefetch hoặc prerender.
Note:
Speculation Rules API không xử lý prefetch tài nguyên con; bạn cần dùng <link rel="prefetch"> cho điều đó.
Khái niệm và cách sử dụng
Quy tắc đầu cơ (speculation rules) có thể được chỉ định bên trong các phần tử <script type="speculationrules"> nội tuyến và các tệp văn bản bên ngoài được tham chiếu bởi header phản hồi Speculation-Rules. Các quy tắc được chỉ định dưới dạng cấu trúc JSON.
Ví dụ về script:
<script type="speculationrules">
{
"prerender": [
{
"where": {
"and": [
{ "href_matches": "/*" },
{ "not": { "href_matches": "/logout" } },
{ "not": { "href_matches": "/*\\?*(^|&)add-to-cart=*" } },
{ "not": { "selector_matches": ".no-prerender" } },
{ "not": { "selector_matches": "[rel~=nofollow]" } }
]
}
}
],
"prefetch": [
{
"urls": ["next.html", "next2.html"],
"requires": ["anonymous-client-ip-when-cross-origin"],
"referrer_policy": "no-referrer"
}
]
}
</script>
Các quy tắc đầu cơ sử dụng phần tử <script> cần được cho phép rõ ràng trong chỉ thị Content-Security-Policy script-src nếu trang bao gồm nó. Điều này được thực hiện bằng cách thêm một trong các nguồn 'inline-speculation-rules', hash-source, hoặc nonce-source.
Ví dụ HTTP header:
Speculation-Rules: "/rules/prefetch.json"
Tài nguyên văn bản chứa JSON quy tắc đầu cơ có thể có bất kỳ tên và phần mở rộng hợp lệ nào, nhưng phải được phục vụ với kiểu MIME application/speculationrules+json.
Giao diện
Speculation Rules API không định nghĩa bất kỳ giao diện nào của riêng nó.
Mở rộng cho các giao diện khác
Document.prerenderingThử nghiệm-
Thuộc tính boolean trả về
truenếu tài liệu đang trong quá trình prerendering. prerenderingchangeevent Thử nghiệm-
Được kích hoạt trên tài liệu prerendered khi nó được kích hoạt (tức là người dùng xem trang).
-
Một số đại diện thời gian giữa khi tài liệu bắt đầu prerendering và khi nó được kích hoạt.
PerformanceResourceTiming.deliveryTypegiá trị"navigational-prefetch"Thử nghiệm-
Báo hiệu rằng loại mục performance là một prefetch.
Tiêu đề HTTP
Content-Security-Policygiá trị'inline-speculation-rules'Thử nghiệm-
Được dùng để cho phép sử dụng
<script type="speculationrules">để định nghĩa quy tắc đầu cơ trên tài liệu được fetch. Clear-Site-Datacác giá trị'prefetchCache'và'prerenderCache'Thử nghiệm-
Dùng để xóa các đầu cơ. Ví dụ, khi trạng thái thay đổi làm cho đầu cơ cũ.
Speculation-RulesThử nghiệm-
Cung cấp danh sách URL trỏ đến tài nguyên văn bản chứa định nghĩa JSON quy tắc đầu cơ.
Supports-Loading-ModeThử nghiệm-
Được đặt bởi mục tiêu điều hướng để chọn sử dụng các chế độ tải rủi ro cao hơn.
HTML features
<script type="speculationrules">Thử nghiệm-
Dùng để định nghĩa một tập hợp quy tắc đầu cơ prefetch và/hoặc prerender bên trong tài liệu hiện tại.
Ví dụ
Xem ví dụ code tại Prerender pages in Chrome for instant page navigations trên developer.chrome.com (2025)
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| HTML> # speculative-loading> |
| Prerendering Revamped> |
Tương thích trình duyệt
>html.elements.script.type.speculationrules
http.headers.Speculation-Rules
Xem thêm
- Speculative loading để so sánh quy tắc đầu cơ và các tính năng cải thiện hiệu suất tương tự khác.