De Speculation Rules API is een set regels in JSON waarmee je de browser vertelt welke links hij vooruit mag laden. Je kunt losse URL's opgeven, maar handiger zijn document rules. Die beschrijven met URL-patronen en CSS-selectors welke links op de pagina in aanmerking komen. Wanneer de browser een regel uitvoert, hangt af van de eagerness:
immediate: meteen, zodra de regels binnen zijn.eager: bij het kleinste signaal. Op desktop na 10 ms hover; op een telefoon, waar hover niet bestaat, zodra een link 50 ms in beeld staat.moderate: op desktop na 200 ms hover, of eerder als je de muisknop al indrukt. Op een telefoon kijkt Chrome welke links nog in beeld staan als je een halve seconde gestopt bent met scrollen.conservative: pas als je de muisknop indrukt of het scherm aanraakt.
Er zijn twee soorten speculatie. Prefetch haalt alleen de HTML van de pagina op en voert niets uit. Prerender gaat verder: de browser bouwt de hele pagina onzichtbaar op, inclusief JavaScript, zodat ze bij de klik meteen verschijnt. Dat is sneller, maar ook ingrijpender, want scripts draaien dan voor een pagina die de bezoeker misschien nooit ziet.
Wij gebruiken eager. De prefetch begint dan zodra de muis een link raakt, en in de tijd tot de klik is de pagina bijna altijd al binnen. Dat heeft een prijs: elke link waar de muis overheen gaat, wordt één keer opgehaald, ook als je er niet op klikt. Op een telefoon gaat het verder: daar haalt Chrome elke link op die 50 ms in beeld staat, dus wie door een overzicht scrolt, laadt vrijwel elke kaart. Chrome bewaart hooguit twee van zulke prefetches tegelijk en gooit de oudste weg, maar dat begrenst wat hij vasthoudt, niet wat hij ophaalt. Kan je server de extra requests niet goed aan, kies dan moderate: die wacht tot iemand echt even stilhoudt.