Een content delivery network (CDN) is een gedistribueerd systeem van servers verspreid over verschillende geografische locaties. Deze servers leveren content aan bezoekers vanaf een locatie dichtbij hen, in plaats van vanaf één centrale server. Door de fysieke afstand die een verzoek moet afleggen te verkleinen, wordt de latentie verlaagd. Door verzoeken lokaal af te handelen, wordt de belasting van de centrale infrastructuur verminderd.
Het verminderen van de latentie is het belangrijkste mechanisme en heeft een grotere impact dan het lijkt, omdat het effect zich opstapelt over de vele roundtrips die nodig zijn om een pagina te laden. Het tot stand brengen van een verbinding, de TLS-onderhandeling en elk daaropvolgend verzoek kosten allemaal tijd, dus het serveren vanaf een locatie vijftig milliseconden verderop in plaats van driehonderd milliseconden verderop verbetert niet één aspect, maar elke opeenvolgende factor in de belasting. Voor een website met een internationaal publiek die vanuit één regio wordt bediend, is dit vaak de grootste beschikbare prestatieverbetering.
Moderne content delivery networks (CDN's) doen aanzienlijk meer dan alleen statische bestanden cachen. Ze beëindigen TLS-verbindingen aan de rand van het netwerk, passen compressie toe, converteren en verkleinen afbeeldingen direct, leveren moderne formaten aan browsers die deze ondersteunen, cachen volledige HTML-responsen voor pagina's die dit toestaan en voeren steeds vaker applicatielogica uit op edge-locaties. Ze bieden ook beveiligingsfuncties, waaronder het tegengaan van denial-of-service-aanvallen, webapplicatiefirewalls en botbeheer, wat voor veel organisaties net zo belangrijk is als de prestaties om er een te implementeren.
De cacheconfiguratie is waar de meeste praktische waarde, maar ook het grootste risico, schuilt. Cache-control headers bepalen wat er wordt opgeslagen, hoe lang en onder welke voorwaarden het opnieuw wordt gevalideerd. Een verkeerde configuratie leidt tot lage cache-hitrates, waardoor het voordeel verloren gaat, of tot verouderde content die aan gebruikers wordt getoond. Dit kan commercieel gezien ernstige gevolgen hebben, vooral wanneer het gaat om prijzen, voorraadniveaus of gepersonaliseerde content. Het ontwerp van de cache-sleutel is eveneens belangrijk: sleutels met onnodige variatie, zoals trackingparameters, gefragmenteerde caches per gebruiker of onnodige apparaatsegmentatie, splitsen de cache en verlagen de hitrates zonder enige toegevoegde waarde.
Gepersonaliseerde en dynamische content vereist een weloverwogen aanpak in plaats van uitsluiting. Door een pagina-sjabloon in de cache aan te bieden met gepersonaliseerde fragmenten die afzonderlijk worden geladen, of door edge-logica te gebruiken om reacties samen te stellen, kan caching worden toegepast op het grootste deel van de content, terwijl de gebruikersspecifieke onderdelen correct blijven. Websites die alles als niet-cachebaar markeren omdat sommige content persoonlijk is, verliezen doorgaans het grootste deel van het beschikbare voordeel.
Bescherming van de oorspronkelijke server is een voordeel dat vaak pas tijdens een incident aan het licht komt. Een verkeerspiek als gevolg van een campagne, een vermelding in de media of een golf van bots die de infrastructuur van de oorspronkelijke server zou overbelasten, wordt grotendeels aan de rand van het netwerk opgevangen wanneer caching goed is geconfigureerd, en gaat er direct doorheen wanneer dat niet het geval is. Het doelbewust testen hiervan, door te meten welk deel van een realistisch verkeerspatroon de oorspronkelijke server zou bereiken, is nuttiger dan ervan uit te gaan dat het netwerk bescherming biedt door zijn aanwezigheid. Voor bedrijven met voorspelbare piekperioden is het controleren van het cachegedrag vóór de piek in plaats van tijdens de piek het verschil tussen een drukke dag en een storing.
De strategie voor het verwijderen van cachegeheugen bepaalt het operationele vertrouwen. Een implementatie die sjablonen of assets wijzigt, moet de betreffende cacheinhoud betrouwbaar en snel kunnen verwijderen. De standaardmethoden, zoals versiebeheer van bestandsnamen van assets in combinatie met tag-gebaseerd of surrogaatsleutelverwijdering voor HTML, zijn het waard om te implementeren voordat een incident ze urgent maakt. In de praktijk bevindt deze configuratie zich binnen... webprestaties nauw samenwerken met productontwikkeling, aangezien beslissingen over caching bepalen hoe de applicatie zich kan gedragen en niet op een verstandige manier door één van beide partijen alleen genomen kunnen worden.