Webhosting

CDN

Definitie

Een CDN (Content Delivery Network) is een netwerk van servers verspreid over de wereld die kopieën van de bestanden van een site in hun cache bewaren en ze uitleveren vanaf het punt dat het dichtst bij de bezoeker ligt. Het verkort de laadtijd, verlicht de originele server en filtert vaak een deel van de aanvallen.

CDN, Webhosting

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.

Schema van de weg van een verzoek door een CDN. De bezoeker vraagt een afbeelding op; de dichtstbijzijnde edge-server zoekt die in zijn cache. Staat ze erin (HIT), dan stuurt hij ze meteen terug. Zo niet (MISS), dan vraagt hij ze op bij de originele server, die WordPress uitvoert of het bestand leest, en bewaart hij een kopie voor de volgende bezoekers, zo lang als Cache-Control aangeeft.
Het CDN antwoordt vanuit zijn cache als dat kan, en spreekt de originele server alleen aan als een kopie ontbreekt of verlopen is.

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.
Video: “What is a Content Delivery Network (CDN)?” (IBM Technology, in het Engels)

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.

Verder lezen

  • Artikel Cloudflare voor WordPress: echt IP-adres, WAF en fouten om te vermijden
  • Pagina Cloudflare, Sucuri en het echte bezoekers-IP

Bronnen

  1. MDN: Cache-Control (externe link, opent in een nieuw tabblad)
  2. Cloudflare Docs: Default cache behavior (externe link, opent in een nieuw tabblad)
  3. Cloudflare Docs: Cloudflare cache responses (externe link, opent in een nieuw tabblad)

Alle definities

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.