CDN uitgelegd: wat een content delivery network doet | We.Inc
Hoe een CDN uw bestanden kopieert naar edge-servers dicht bij bezoekers, wat een cache hit en een cache miss betekenen, en welke Cache-Control-headers bepalen wat de edge mag bewaren.
Een content delivery network is een verzameling servers verspreid over de wereld die kopieën van de bestanden van uw site bewaren. Bezoekers krijgen antwoord van een edge-server in de buurt in plaats van van uw origin, dus pagina's laden met minder wachttijd en uw eigen server krijgt veel minder verzoeken. Cache-Control-headers bepalen wat de edge mag opslaan.
CDN-begrippen in één regel
Begrip
Betekenis
Origin
Uw eigen server of opslag, waar de echte bestanden staan
Edge
Een CDN-server dicht bij de bezoeker die namens de origin antwoordt
Cache hit
De edge had al een verse kopie en antwoordde zonder de origin te vragen
Cache miss
De edge had niets bruikbaars, haalde het bij de origin en sloeg het misschien op
Purge
De CDN opdragen opgeslagen kopieën weg te gooien zodat het volgende verzoek nieuwe ophaalt
Afstand kost tijd op internet: elke nieuwe verbinding heeft meerdere round trips nodig voordat de eerste byte aankomt. Een CDN maakt die trips korter door te antwoorden vanaf een plek dicht bij de lezer. Deze gids legt uit hoe dat werkt, wat het niet kan, en hoe uw headers het sturen, met een simulator die u kunt uitproberen.
Kies Cache-Control-directives in de simulator om te zien of een browser en een CDN-edge de response mogen opslaan, en hoe lang.
Kopieer de resulterende headerregel voor uw server- of hostingconfiguratie.
Lees de naslagtabel om verstandige waarden te kiezen voor HTML, gehashte assets en privépagina's.
Purge na een deploy de CDN of vertrouw op nieuwe bestandsnamen, zodat bezoekers de update krijgen.
Geef bestandsnamen een content-hash, zoals app.3f9a1c.js, en cache ze een jaar met immutable. Een nieuwe build levert nieuwe namen op, dus er wordt nooit iets verouderds geserveerd.
Houd HTML op een korte gedeelde levensduur of laat het opnieuw valideren, omdat de URL ervan tussen releases nooit verandert.
Laat een CDN nooit pagina's opslaan met accountgegevens van één persoon. Markeer die als private of no-store.
Een library laden vanaf een openbare CDN bespaart geen herhaalde download meer: browsers verdelen hun cache tegenwoordig per site, voor privacy.
Veelgestelde vragen
Maakt een CDN elke site sneller?
Meestal wel, voor bezoekers ver van uw server, omdat round trips korter zijn en verbindingen dichtbij worden opgezet. Het kan tijd kosten als het een extra domein toevoegt om op te zoeken en mee te verbinden, en daarom is alles vanaf uw eigen domein via de CDN serveren beter dan hosts mengen.
Wat is s-maxage?
Een Cache-Control-directive die de versheidsduur alleen voor gedeelde caches zoals CDN's instelt. Op de edge overschrijft hij max-age, terwijl browsers max-age blijven gebruiken, dus u kunt de edge een pagina een uur laten bewaren en de browser een minuut.
Kan een CDN dynamische pagina's cachen?
Ja, als de response voor iedereen hetzelfde is. Zelfs een paar seconden caching kan een verkeerspiek opvangen. Responses die per ingelogde gebruiker verschillen, mogen niet in een gedeelde cache worden opgeslagen.
Is een CDN een beveiligingsrisico?
Het is een extra partij in het pad van uw content. Laadt u scripts vanaf een CDN van derden, voeg dan een Subresource Integrity-hash toe zodat de browser een gewijzigd bestand weigert.
Moet ik zelf een CDN toevoegen?
Veel hostingplatforms serveren gepubliceerde sites al via een CDN. Lees de documentatie van uw host voordat u er een tweede bovenop zet, want twee lagen caching maken purgen en debuggen lastiger.
Wat er bij een verzoek gebeurt
De resolver van de bezoeker geeft het adres van een edge in de buurt. De edge kijkt in zijn opslag naar de URL. Bij een hit antwoordt hij meteen; bij een miss vraagt hij het aan uw origin, geeft het antwoord door en bewaart een kopie als de headers dat toestaan.
Edges houden ook warme verbindingen naar de origin open, dus zelfs een miss is vaak sneller dan een bezoeker die vanaf de andere kant van de wereld met uw server verbindt.
Wat een CDN niet oplost
Trage databasequery's, zwaar JavaScript en te grote afbeeldingen blijven traag, ook vanaf een edge. Een CDN haalt afstand weg, geen werk.
Het voegt ook nog iets toe dat kan falen. Heeft de CDN een storing, dan raakt dat elke site erachter, dus statuspagina's en een plan voor dat geval zijn de moeite waard.
Cache-Control-directives die op de edge tellen
Wat elke directive browsers en CDN's vertelt
Directive
Browser
CDN-edge
max-age=N
Vers gedurende N seconden
Vers gedurende N seconden, tenzij s-maxage is ingesteld
s-maxage=N
Genegeerd
Vers gedurende N seconden, overschrijft max-age
Mag opslaan
Mag opslaan, zelfs met een Authorization-header
Mag opslaan
Mag niet opslaan
Mag niet opslaan
Mag niet opslaan
Slaat hervalidatie over zolang vers
Slaat hervalidatie over zolang vers
stale-while-revalidate=N
Mag N seconden verouderd serveren tijdens het verversen
Hetzelfde, als de CDN het ondersteunt
Header-recepten per bestandstype
Drie gangbare beleidsregels
Gehashte assets leven een jaar, HTML ververst elke minuut op de edge, en accountpagina's komen nooit in een gedeelde cache.
Cache-Control-simulator
Kies directives en zie wie de response mag bewaren.
max-age (seconden)
s-maxage (seconden, leeg voor geen)
Delen
Public, private of no-store
immutable toevoegen
Browser
CDN-edge
Mag opslaan, vers gedurende {n} seconden
Mag niet opslaan
Mag opslaan, maar moet vóór hergebruik bij de server controleren