Speculation Rules API pozwala przeglądarkom na wstępne pobieranie (prefetch) lub wstępne renderowanie (prerender) prawdopodobnych przyszłych nawigacji, aby zapewnić znacznie szybsze ładowanie stron; jest to rozwiązanie zaprojektowane dla witryn wielostronicowych i obecnie eksperymentalne w wielu przeglądarkach.
Speculation Rules API zapewnia deklaratywny sposób informowania przeglądarki, które adresy URL dokumentów należy wstępnie pobrać (prefetch) lub wstępnie wyrenderować (prerender) w oparciu o interakcje użytkownika, listy lub reguły dokumentu. Ma na celu zastąpienie starszych, mniej bezpiecznych technik prerenderowania i zapewnienie programistom większej kontroli nad tym, kiedy i jak odbywa się spekulacja.
Korzyści obejmują szybszą postrzeganą nawigację, zmniejszone opóźnienia w typowych przepływach oraz bardziej jawną, możliwą do audytu konfigurację zachowania spekulacji. Jest to szczególnie przydatne w przypadku aplikacji wielostronicowych (MPA), w których powszechne są nawigacje obejmujące cały dokument.
Najczęstszym sposobem rejestrowania reguł jest blok JSON wewnątrz znacznika skryptu przy użyciu type="speculationrules". Reguły mogą zawierać listy adresów URL, akcje prerender lub prefetch oraz warunki, takie jak chęć użytkownika (eagerness) lub typ źródła.
<script type="speculationrules">
{
"prerender": [
{
"source": "list",
"urls": ["/next-page", "/checkout"]
}
],
"prefetch": [
{
"source": "list",
"urls": ["/assets/heavy-image.jpg"]
}
]
}
</script>
Możesz także rejestrować reguły dynamicznie z poziomu JavaScript, wstawiając węzeł <script type="speculationrules"> lub używając reguł dokumentu do automatycznej spekulacji linków; codelab demonstruje techniki debugowania i dynamicznej rejestracji.
// Przykład: wstrzykiwanie reguł w czasie wykonywania
const script = document.createElement('script');
script.type = 'speculationrules';
script.textContent = JSON.stringify({
"prerender": [{ "source": "list", "urls": ["/next"] }]
});
document.head.appendChild(script);
Użyj DevTools do inspekcji aktywności spekulacji, zacznij zachowawczo (prefetch przed prerender) i mierz koszty w stosunku do korzyści — prerendering może zużywać zasoby procesora i sieci, jeśli jest nadużywany. DebugBear i dokumentacja Chrome zapewniają praktyczne wskazówki dla złożonych witryn i monitorowania.
| Przeglądarka | Typowy status | Uwagi |
|---|---|---|
| Chrome (desktop i Android) | Obsługiwane | Pełna implementacja w stabilnej wersji Chrome; aktywnie dokumentowana przez zespół Chrome |
| Edge (Chromium) | Obsługiwane | Zgadza się z zachowaniem Chromium; to samo środowisko uruchomieniowe dla reguł spekulacji co w Chrome |
| Opera | Obsługiwane | Wersje oparte na Chromium dziedziczą wsparcie |
| Firefox | Nieobsługiwane / eksperymentalne | MDN oznacza API jako eksperymentalne; Firefox nie wprowadził pełnego wsparcia |
| Safari (macOS i iOS) | Ograniczone | WebKit od Apple jest ostrożny; spodziewaj się częściowego wsparcia lub flag |
| Inne przeglądarki mobilne | Różne | Przeglądarki mobilne oparte na Chromium podążają za Chrome; inne różnią się znacznie |