Een site die in Amsterdam wordt gehost, reageert trager voor een bezoeker in Toronto of Singapore dan voor iemand in Utrecht: de afstand voegt bij elke heen-en-terugreis vertraging toe. Een CDN plaatst zogenaamde edge-servers in tal van steden en geeft ze kopieën van de bestanden. De bezoeker wordt naar de dichtstbijzijnde gestuurd, meestal via de DNS: de naam van de site verwijst naar het netwerk van het CDN, en niet meer rechtstreeks naar jouw server.
Hoe een CDN werkt
Het CDN gedraagt zich als een gedeelde cache tussen de bezoekers en jouw server, die dan de origin heet. Bij elk verzoek kijkt de edge-server of hij een geldige kopie heeft. Zo ja, dan stuurt hij die terug zonder de origin te benaderen; zo niet, dan vraagt hij het bestand op, geeft het door en bewaart het voor de volgende bezoekers.

Hoe lang een kopie bewaard blijft, hangt af van de HTTP-headers die de origin meestuurt. MDN rekent CDN's tot de gedeelde caches, die één antwoord opslaan en aan veel gebruikers uitleveren: Cache-Control: public, max-age=… staat die caching toe, s-maxage legt een aparte duur vast voor gedeelde caches, private en no-store verbieden het. Cloudflare toont bijvoorbeeld de uitkomst van elk verzoek in de header cf-cache-status: HIT (uit de cache), MISS (niet aanwezig, opgevraagd bij de origin), EXPIRED (verlopen kopie), BYPASS of DYNAMIC (niet gecachet).
Wat een CDN echt cachet
Eén punt verrast vaak: volgens de documentatie van Cloudflare cachet zijn CDN standaard geen HTML en geen JSON. Het bewaart statische bestanden die het aan de extensie herkent (afbeeldingen, CSS, JavaScript, lettertypen, pdf's, video's), terwijl de WordPress-pagina's bij elk bezoek gewoon door jouw server worden gemaakt. Ook pagina's cachen kan met aparte regels, op voorwaarde dat je alles uitsluit wat persoonlijk is: het beheer, de winkelwagen, de klantaccount en de inlogpagina's.
Voordelen en beperkingen
- Snelheid: minder afstand voor zware bestanden, en vaak recente protocollen als HTTP/2 en HTTP/3 aan de edge-kant.
- Minder belasting: elk bestand dat uit de cache komt, is een verzoek minder voor je hosting.
- Bescherming: een CDN in proxymodus vangt een deel van de volumetrische aanvallen op en biedt vaak een web application firewall, als optie of inbegrepen.
- Beperkingen: een verouderde cache toont na een wijziging nog oude versies, dus je moet weten hoe je de cache leegt (purge); en je server ziet niet meer het IP-adres van de bezoekers, maar dat van het CDN.
Voor WordPress
- Twee soorten: het CDN als proxy (bijvoorbeeld Cloudflare), dat na een wijziging van de nameservers voor de hele site komt te staan, en het CDN voor bestanden, waarbij een plugin de adressen van de media herschrijft naar een subdomein van het CDN.
- Herstel het echte IP-adres van de bezoekers, anders treffen het beperken van inlogpogingen, de logbestanden en de blokkades de servers van het CDN. Onze gids Cloudflare voor WordPress beschrijft de instellingen aan de serverkant; WP Masquerade Pro leest ook de header van Cloudflare, maar alleen als de verbinding uit een officieel IP-bereik van Cloudflare komt, zoals de pagina over de ondersteuning van Cloudflare uitlegt.
- Leeg de cache na elke update van het thema of de plugins, en controleer dat je cacheplugin en het CDN elkaar niet tegenspreken.
- Bescherm de origin: blijft je server rechtstreeks bereikbaar via zijn IP-adres, dan kan een aanvaller het CDN en zijn firewall omzeilen.
Afbeeldingen die uit de cache van het CDN komen, bereiken je server niet meer: een bescherming tegen hotlinking moet je dan in het CDN zelf instellen.