Leer hoe je resource hints zoals preload, prefetch en preconnect gebruikt om de laadtijden van websites te optimaliseren en de gebruikerservaring wereldwijd te verbeteren.
Website Snelheid Verbeteren met Resource Hints: Preload, Prefetch en Preconnect
In de snelle digitale wereld van vandaag is de snelheid van een website van cruciaal belang. Gebruikers verwachten dat websites snel laden en direct reageren. Langzame laadtijden kunnen leiden tot een slechte gebruikerservaring, hogere bounce rates en uiteindelijk tot verloren omzet. Resource hints zijn krachtige tools die ontwikkelaars kunnen helpen de laadtijden van websites te optimaliseren door de browser te vertellen welke resources belangrijk zijn en hoe ze deze moeten prioriteren. Dit artikel onderzoekt drie belangrijke resource hints: preload
, prefetch
en preconnect
, en biedt praktische voorbeelden voor implementatie.
Resource Hints Begrijpen
Resource hints zijn instructies die de browser informeren over de resources die een webpagina in de toekomst nodig heeft. Ze stellen ontwikkelaars in staat de browser proactief te informeren over kritieke resources, waardoor deze ze eerder kan ophalen of verbinden dan anders het geval zou zijn. Dit kan de laadtijden aanzienlijk verkorten en de waargenomen prestaties verbeteren.
De drie belangrijkste resource hints zijn:
- Preload: Haalt kritieke resources op die nodig zijn voor het initiële laden van de pagina.
- Prefetch: Haalt resources op die waarschijnlijk nodig zijn voor toekomstige navigaties of interacties.
- Preconnect: Etabliert vroege verbindingen met belangrijke externe servers.
Preload: Prioriteit geven aan Kritieke Resources
Wat is Preload?
Preload
is een declaratieve fetch waarmee je de browser kunt vertellen om een resource die nodig is voor de huidige navigatie zo vroeg mogelijk op te halen. Dit is vooral handig voor resources die de browser pas laat ontdekt, zoals afbeeldingen, lettertypen, scripts of stylesheets die via CSS of JavaScript worden geladen. Door deze resources te preladen, kun je voorkomen dat ze render-blocking worden en de waargenomen laadsnelheid van je website verbeteren.
Wanneer Preload Gebruiken
Gebruik preload
voor:
- Lettertypen: Vroege laadtijden voor aangepaste lettertypen kunnen flash of unstyled text (FOUT) of flash of invisible text (FOIT) voorkomen.
- Afbeeldingen: Prioriteit geven aan afbeeldingen boven de vouw zorgt ervoor dat ze snel laden, waardoor de initiële gebruikerservaring wordt verbeterd.
- Scripts en Stylesheets: Vroeg laden van kritieke CSS- of JavaScript-bestanden voorkomt render-blocking.
- Modules en Web Workers: Preloaden van modules of web workers kan de responsiviteit van je applicatie verbeteren.
Hoe Preload te Implementeren
Je kunt preload
implementeren met de <link>
tag in de <head>
van je HTML-document:
<link rel="preload" href="/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
<link rel="preload" href="/styles/critical.css" as="style">
<link rel="preload" href="/scripts/app.js" as="script">
<link rel="preload" href="/images/hero.jpg" as="image">
Uitleg:
rel="preload"
: Specificeert dat de browser de resource moet preladen.href="/path/to/resource"
: De URL van de resource die moet worden gepreload.as="type"
: Specificeert het type resource dat wordt gepreload (bijv. lettertype, stijl, script, afbeelding). Het attribuutas
is verplicht en cruciaal voor de browser om de resource correct te prioriteren en af te handelen. Door de juisteas
-waarde te gebruiken, zorgt u ervoor dat de browser de juiste Content Security Policy (CSP) toepast en de juisteAccept
-header verzendt.type="mime/type"
: (Optioneel maar aanbevolen) Specificeert het MIME-type van de resource. Dit helpt de browser het juiste resource-formaat te selecteren, vooral voor lettertypen.crossorigin="anonymous"
: (Vereist voor lettertypen die van een andere origin worden geladen) Specificeert de CORS-modus voor de aanvraag. Als je lettertypen van een CDN laadt, heb je dit attribuut waarschijnlijk nodig.
Voorbeeld: Een lettertype preladen
Stel je voor dat je een aangepast lettertype hebt genaamd 'OpenSans' dat op je website wordt gebruikt. Zonder preload ontdekt de browser dit lettertype pas nadat het het CSS-bestand heeft geparseerd. Dit kan een vertraging veroorzaken bij het renderen van de tekst met het juiste lettertype. Door het lettertype te preladen, kun je deze vertraging elimineren.
<link rel="preload" href="/fonts/OpenSans-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
Voorbeeld: Een kritiek CSS-bestand preladen
Als je website een kritiek CSS-bestand heeft dat essentieel is voor het renderen van de initiële weergave, kan het preladen ervan de waargenomen prestaties aanzienlijk verbeteren.
<link rel="preload" href="/styles/critical.css" as="style">
Best Practices voor Preload
- Prioriteer Kritieke Resources: Preload alleen resources die essentieel zijn voor het initiële laden van de pagina. Overmatig gebruik van preload kan de prestaties negatief beïnvloeden.
- Gebruik het Juiste
as
Attribuut: Geef altijd het juisteas
attribuut op om ervoor te zorgen dat de browser de resource correct afhandelt. - Neem het
type
Attribuut op: Neem hettype
attribuut op om de browser te helpen het juiste resource-formaat te selecteren. - Gebruik
crossorigin
voor Cross-Origin Lettertypen: Zorg ervoor dat u hetcrossorigin
attribuut opneemt wanneer u lettertypen van een andere origin laadt. - Test de Prestaties: Test altijd de impact van preload op de prestaties om er zeker van te zijn dat het daadwerkelijk de laadtijden verbetert. Gebruik tools zoals Google PageSpeed Insights of WebPageTest om de impact te meten.
Prefetch: Anticiperen op Toekomstige Behoeften
Wat is Prefetch?
Prefetch
is een resource hint die de browser vertelt resources op te halen die waarschijnlijk nodig zijn voor toekomstige navigaties of interacties. In tegenstelling tot preload
, dat zich richt op resources die nodig zijn voor de huidige pagina, anticipeert prefetch
op de volgende actie van de gebruiker. Dit is met name handig voor het verbeteren van de laadsnelheid van volgende pagina's of componenten.
Wanneer Prefetch Gebruiken
Gebruik prefetch
voor:
- Resources van de Volgende Pagina: Als je weet dat de gebruiker waarschijnlijk naar een specifieke pagina navigeert, prefetch dan de resources ervan.
- Resources voor Gebruikersinteracties: Als een gebruikersinteractie het laden van specifieke resources activeert (bijv. een modaal venster, een formulier), prefetch dan die resources.
- Afbeeldingen en Assets op Andere Pagina's: Preload afbeeldingen of assets die worden gebruikt op andere pagina's die de gebruiker waarschijnlijk zal bezoeken.
Hoe Prefetch te Implementeren
Je kunt prefetch
implementeren met de <link>
tag in de <head>
van je HTML-document:
<link rel="prefetch" href="/page2.html">
<link rel="prefetch" href="/images/product.jpg">
<link rel="prefetch" href="/scripts/modal.js">
Uitleg:
rel="prefetch"
: Specificeert dat de browser de resource moet prefetchen.href="/path/to/resource"
: De URL van de resource die moet worden geprefetched.
Voorbeeld: De resources van de volgende pagina prefetchen
Als je website een duidelijke gebruikersstroom heeft, zoals een formulier met meerdere stappen, kun je de resources voor de volgende stap prefetchen wanneer de gebruiker zich op de huidige stap bevindt.
<link rel="prefetch" href="/form/step2.html">
Voorbeeld: Resources voor een modaal venster prefetchen
Als je website een modaal venster gebruikt dat extra resources laadt wanneer het wordt geopend, kun je die resources prefetchen om een soepele gebruikerservaring te garanderen.
<link rel="prefetch" href="/scripts/modal.js">
<link rel="prefetch" href="/styles/modal.css">
Best Practices voor Prefetch
- Gebruik Spaarzaam: Prefetch moet spaarzaam worden gebruikt, omdat het bandbreedte en resources kan verbruiken, zelfs als de gebruiker de geprefetchte resources niet nodig heeft.
- Prioriteer Waarschijnlijke Navigaties: Prefetch resources voor pagina's of interacties die het meest waarschijnlijk zullen voorkomen.
- Houd rekening met Netwerkomstandigheden: Prefetch is het meest geschikt voor gebruikers met stabiele en snelle internetverbindingen. Vermijd het prefetchen van grote resources voor gebruikers met langzame of gemeten verbindingen. Je kunt de Network Information API gebruiken om het verbindingstype van de gebruiker te detecteren en het prefetchen dienovereenkomstig aan te passen.
- Monitor Prestaties: Monitor de impact van prefetch op de prestaties van je website om ervoor te zorgen dat het een netto voordeel oplevert.
- Gebruik Dynamische Prefetching: Implementeer prefetching dynamisch op basis van gebruikersgedrag en analysegegevens. Prefetch bijvoorbeeld resources voor pagina's die vaak worden bezocht door gebruikers die zich momenteel op de huidige pagina bevinden.
Preconnect: Vroege Verbindingen Etableren
Wat is Preconnect?
Preconnect
is een resource hint waarmee je vroege verbindingen kunt tot stand brengen met belangrijke externe servers. Het tot stand brengen van een verbinding omvat verschillende stappen, waaronder DNS lookup, TCP handshake en TLS-onderhandeling. Deze stappen kunnen aanzienlijke latentie toevoegen aan het laden van resources van die servers. Preconnect
stelt je in staat deze stappen op de achtergrond te initiëren, zodat de verbinding al tot stand is gebracht wanneer de browser een resource van de server moet ophalen.
Wanneer Preconnect Gebruiken
Gebruik preconnect
voor:
- Servers van derden: Servers die lettertypen, CDN's, API's of andere resources hosten waarop je website vertrouwt.
- Vaak Gebruikte Servers: Servers waartoe je website vaak toegang heeft.
Hoe Preconnect te Implementeren
Je kunt preconnect
implementeren met de <link>
tag in de <head>
van je HTML-document:
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.example.com">
Uitleg:
rel="preconnect"
: Specificeert dat de browser verbinding moet maken met de server.href="https://example.com"
: De URL van de server waarmee verbinding moet worden gemaakt.crossorigin
: (Optioneel, maar vereist voor resources die met CORS worden geladen) Specificeert dat de verbinding CORS vereist.
Voorbeeld: Verbinding maken met Google Fonts
Als je website Google Fonts gebruikt, kan het maken van een preconnect met https://fonts.gstatic.com
de latentie van het laden van lettertypen aanzienlijk verminderen.
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
Het attribuut crossorigin
is hier cruciaal omdat Google Fonts CORS gebruikt om de lettertypen te bedienen.
Voorbeeld: Verbinding maken met een CDN
Als je website een CDN gebruikt om statische assets te bedienen, kan het maken van een preconnect met de hostnaam van de CDN de latentie van het laden van die assets verminderen.
<link rel="preconnect" href="https://cdn.example.com">
Best Practices voor Preconnect
- Gebruik met Oordeel: Verbinding maken met te veel servers kan de prestaties daadwerkelijk verslechteren, omdat de browser beperkte resources heeft voor het tot stand brengen van verbindingen.
- Prioriteer Belangrijke Servers: Maak verbinding met de servers die het meest kritiek zijn voor de prestaties van je website.
- Overweeg DNS-Prefetch: Overweeg voor servers waarmee je geen volledige preconnect hoeft te maken, maar waarvan je toch de DNS vroegtijdig wilt oplossen,
<link rel="dns-prefetch" href="https://example.com">
te gebruiken. DNS-prefetch voert alleen de DNS lookup uit, wat minder resource-intensief is dan een volledige preconnect. - Test de Prestaties: Test altijd de impact van preconnect op de prestaties om er zeker van te zijn dat het een netto voordeel oplevert.
- Combineer met andere Resource Hints: Gebruik preconnect in combinatie met preload en prefetch om optimale prestaties te bereiken. Maak bijvoorbeeld verbinding met de server die je lettertypen host en preload vervolgens de lettertypebestanden.
Resource Hints Combineren voor Optimale Prestaties
De ware kracht van resource hints ligt in het strategisch combineren ervan. Hier is een praktisch voorbeeld:
Stel je een website voor die een aangepast lettertype gebruikt dat op een CDN wordt gehost en een kritiek JavaScript-bestand laadt.
- Preconnect met de CDN: Etablisseer een vroege verbinding met de CDN die het lettertype en het JavaScript-bestand host.
<link rel="preconnect" href="https://cdn.example.com" crossorigin>
- Preload het Lettertype: Geef prioriteit aan het laden van het lettertype om FOUT te voorkomen.
<link rel="preload" href="https://cdn.example.com/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
- Preload het JavaScript-bestand: Geef prioriteit aan het laden van het JavaScript-bestand om ervoor te zorgen dat het beschikbaar is wanneer het nodig is.
<link rel="preload" href="https://cdn.example.com/scripts/app.js" as="script">
Tools voor het Analyseren van Resource Hints
Verschillende tools kunnen je helpen de effectiviteit van je resource hints te analyseren:
- Google PageSpeed Insights: Biedt aanbevelingen voor het optimaliseren van de prestaties van je website, inclusief het gebruik van resource hints.
- WebPageTest: Hiermee kun je de prestaties van je website testen vanaf verschillende locaties en netwerkomstandigheden.
- Chrome DevTools: Het paneel Netwerk in Chrome DevTools toont de timing van het laden van resources en kan je helpen kansen voor optimalisatie te identificeren.
- Lighthouse: Een geautomatiseerde tool voor het verbeteren van de kwaliteit van webpagina's. Het heeft audits voor prestaties, toegankelijkheid, progressieve web apps, SEO en meer.
Veelvoorkomende Valkuilen en Hoe Deze te Vermijden
- Overmatig Gebruik van Resource Hints: Het gebruik van te veel resource hints kan de prestaties negatief beïnvloeden. Concentreer je op de meest kritieke resources.
- Onjuist
as
Attribuut: Het gebruik van het verkeerdeas
attribuut voor preload kan voorkomen dat de resource correct wordt geladen. - CORS Negeren: Als je het
crossorigin
attribuut niet opneemt bij het laden van resources van een andere origin, kan dit laadfouten veroorzaken. - Prestaties Niet Testen: Test altijd de impact van resource hints op de prestaties om er zeker van te zijn dat ze een netto voordeel opleveren.
- Onjuiste Paden: Controleer en zorg ervoor dat alle bestandspaden en URL's die voor de resource hints zijn gespecificeerd correct zijn, anders leidt dit tot een fout.
De Toekomst van Resource Hints
Resource hints evolueren voortdurend, met nieuwe functies en verbeteringen die aan browserspecificaties worden toegevoegd. Op de hoogte blijven van de laatste ontwikkelingen in resource hints kan je helpen de prestaties van je website verder te optimaliseren. De modulepreload
is bijvoorbeeld een nieuwere resource hint die specifiek is ontworpen voor het preladen van JavaScript-modules. Ook het attribuut priority
voor resource hints stelt je in staat om de prioriteit van een resource ten opzichte van andere resources te specificeren. De browserondersteuning voor deze functies evolueert nog steeds, dus controleer de compatibiliteit voordat je ze implementeert.
Conclusie
Resource hints zijn krachtige tools voor het optimaliseren van de laadtijden van websites en het verbeteren van de gebruikerservaring. Door strategisch gebruik te maken van preload
, prefetch
en preconnect
, kun je de browser proactief informeren over kritieke resources, de latentie verminderen en de waargenomen prestaties van je website verbeteren. Vergeet niet om kritieke resources te prioriteren, resource hints oordeelkundig te gebruiken en altijd de impact van je wijzigingen op de prestaties te testen. Door de best practices te volgen die in dit artikel worden beschreven, kun je de prestaties van je website aanzienlijk verbeteren en een betere ervaring bieden voor je gebruikers over de hele wereld.