CDN-richtlijnen

Azure Storage
Azure Blob Storage

Een netwerk voor contentlevering (CDN) is een gedistribueerd netwerk van servers dat webinhoud efficiënt aan gebruikers kan leveren. CDN's slaan inhoud in de cache op op edge-servers die zich dicht bij eindgebruikers bevinden om de latentie te minimaliseren.

CDN's worden gewoonlijk gebruikt voor het leveren van statische inhoud, zoals afbeeldingen, opmaakmodellen, documenten, scripts op de client en HTML-pagina's. De belangrijkste voordelen van het gebruik van een CDN zijn lagere latentie en snellere levering van inhoud aan gebruikers, ongeacht de geografische locatie ten opzichte van het datacenter waar de toepassing wordt gehost. CDN's kunnen ook bijdragen aan een vermindering van de belasting van een webtoepassing, omdat de toepassing geen aanvragen voor de inhoud hoeft te onderhouden die in het CDN wordt gehost.

CDN-diagram

In Azure is het Azure Content Delivery Network een globale CDN-oplossing voor de levering van inhoud met een hoge bandbreedte die wordt gehost in Azure of op een andere locatie. Met het Azure CDN kunt u openbaar toegankelijke objecten die zijn geladen uit Azure Blob-opslag, een webtoepassing, virtuele machine of een openbaar toegankelijke webserver, in de cache opslaan.

In dit onderwerp worden een aantal algemene aanbevolen procedures en overwegingen bij het gebruik van een CDN beschreven. Zie Azure CDN voor meer informatie.

Hoe en waarom een CDN wordt gebruikt

Doorgaans wordt een CDN voor het volgende gebruikt:

  • Het leveren van statische resources voor clienttoepassingen, vaak van een website. Deze resources kunnen afbeeldingen, opmaakmodellen, documenten, bestanden, scripts op de client, HTML-pagina's of HTML-fragmenten zijn, of andere inhoud die de server niet hoeft te wijzigen voor elke aanvraag. De toepassing kan items maken tijdens runtime en deze beschikbaar maken voor het CDN (bijvoorbeeld door een lijst met huidige nieuwskoppen te maken), maar dit wordt niet voor elke aanvraag uitgevoerd.

  • Het leveren van openbare statische en gedeelde inhoud aan apparaten, zoals mobiele telefoons en tablets. De toepassing zelf is een webservice die een API biedt aan clients die op verschillende apparaten worden uitgevoerd. Het CDN kan ook (via de webservice) statische gegevenssets leveren die de clients kunnen gebruiken, bijvoorbeeld om de UI van de client te genereren. Het CDN kan bijvoorbeeld worden gebruikt om JSON- of XML-documenten te distribueren.

  • Het bedienen van volledige websites die alleen bestaan uit openbare statische inhoud aan clients, zonder toegewezen rekenresources te vereisen.

  • Het op aanvraag streamen van videobestanden naar de client. Video's profiteren van de lage latentie en betrouwbare connectiviteit die beschikbaar is via de wereldwijd verspreide datacenters die CDN-verbindingen bieden. Microsoft Azure Media Services (AMS) kan worden geïntegreerd met Azure CDN om inhoud rechtstreeks aan het CDN te leveren voor verdere distributie. Zie Streaming endpoints overview (Overzicht van streaming-eindpunten) voor meer informatie.

  • Het in het algemeen verbeteren van de ervaring voor gebruikers, met name voor degenen die zich ver van het datacenter bevinden dat de toepassing host. Deze gebruikers hebben anders mogelijk last van hogere latentie. Een groot deel van de totale grootte van de inhoud in een webtoepassing is vaak statisch en het gebruik van het CDN kan helpen om de prestaties en de algehele gebruikerservaring te behouden, terwijl de noodzaak om de toepassing in meerdere datacenters te implementeren wordt geëlimineerd. Zie Azure CDN POP-locaties voor een lijst met CDN-knooppuntlocaties.

  • Het ondersteunen van IoT-oplossingen (Internet of Things). De vele apparaten die betrokken zijn bij een IoT-oplossing kunnen een toepassing eenvoudig overbelasten als deze firmware-updates rechtstreeks naar elk apparaat moet distribueren.

  • Omgaan met pieken en pieken in de vraag zonder dat de toepassing hoeft te worden geschaald, waardoor de daaruit voortvloeiende toename van de lopende kosten wordt vermeden. Wanneer er bijvoorbeeld een update voor een besturingssysteem wordt uitgebracht voor een hardwareapparaat zoals een specifiek model router of voor een consumentenapparaat zoals een smart-tv, zal er een grote piek in de aanvraag zijn wanneer deze binnen een korte periode door miljoenen gebruikers en apparaten wordt gedownload.

Uitdagingen

Er zijn verschillende uitdagingen waarmee u rekening moet houden wanneer u een CDN wilt gebruiken.

  • Implementatie. Bepaal de oorsprong van waaruit het CDN de inhoud ophaalt en of u de inhoud in meer dan één opslagsysteem wilt implementeren. Houd rekening met het proces voor het implementeren van statische inhoud en resources. U moet bijvoorbeeld misschien een afzonderlijke stap implementeren om inhoud in Azure Blob-opslag te laden.

  • Versiebeheer en cachebeheer. Denk na over hoe u statische inhoud wilt bijwerken en nieuwe versies wilt implementeren. Krijg inzicht in hoe het CDN caching en time-to-live (TTL) uitvoert. Zie Hoe caching werkt voor Azure CDN.

  • Testen. Het kan lastig zijn om lokale testen van uw CDN-instellingen uit te voeren wanneer u lokaal of in een faseringsomgeving een toepassing ontwikkelt en test.

  • Zoekmachineoptimalisatie (Search Engine Optimization, SEO). Inhoud, zoals afbeeldingen en documenten, wordt vanaf een ander domein geleverd wanneer u het CDN gebruikt. Dit kan gevolgen hebben voor de zoekmachineoptimalisatie voor deze inhoud.

  • Beveiliging van inhoud. Niet alle CDN's bieden een vorm van toegangsbeheer voor de inhoud. Sommige CDN-services, waaronder Azure CDN, ondersteunen verificatie op basis van tokens om CDN-inhoud te beveiligen. Zie Securing Azure Content Delivery Network assets with token authentication (Het beveiligen van Azure Content Delivery Network-assets met tokenverificatie) voor meer informatie.

  • Clientbeveiliging. Clients kunnen verbinding maken vanaf een omgeving die toegang tot resources op het CDN niet toestaat. Dit kan een beveiligingsbeperkte omgeving zijn die de toegang beperkt tot alleen een reeks bekende resources of een omgeving die het laden van resources van iets anders dan de oorsprong van de pagina voorkomt. Er is een alternatieve implementatie vereist om dergelijke gevallen af te handelen.

  • Flexibiliteit. Het CDN is een potentieel enkel storingspunt voor een toepassing.

Scenario's waarin een CDN mogelijk minder nuttig is, zijn onder andere:

  • Als de inhoud een lage trefferfrequentie heeft, kan het zijn dat deze slechts enkele malen wordt geopend wanneer deze geldig is (bepaald door de time-to-live-instelling).

  • Als de gegevens privé zijn, zoals voor grote ondernemingen of toeleveringsecosystemen.

Algemene richtlijnen en aanbevolen procedures

Het gebruik van een CDN is een goede manier om de belasting op uw toepassing te minimaliseren en de beschikbaarheid en prestaties te maximaliseren. Overweeg de overstap naar deze strategie voor alle geschikte inhoud en resources die uw toepassing gebruikt. Houd rekening met de punten in de volgende secties wanneer u een strategie ontwerpt voor het gebruik van een CDN.

Implementatie

Statische inhoud moet mogelijk onafhankelijk van de toepassing worden ingericht en geïmplementeerd als u deze niet in het toepassingsinstallatiepakket of in het proces opneemt. Houd rekening met de invloed hiervan op de versiebeheeraanpak die u gebruikt voor het beheer van zowel de toepassingsonderdelen als de statische inhoud van de resource.

Overweeg het gebruik van bundelings- en minificatietechnieken om de laadtijden voor clients te verlagen. Bundeling combineert meerdere bestanden in één bestand. Minificatie verwijdert onnodige tekens uit scripts en CSS-bestanden zonder de functionaliteit te wijzigen.

Als u de inhoud naar een extra locatie moet implementeren, is dit een extra stap in het implementatieproces. Als de toepassing de inhoud voor het CDN bijwerkt, mogelijk met regelmatige intervallen of als reactie op een gebeurtenis, moet deze de bijgewerkte inhoud opslaan in extra locaties en het eindpunt voor het CDN.

Denk na over hoe u lokale ontwikkeling en testen afhandelt wanneer bepaalde statische inhoud naar verwachting vanuit een CDN wordt geleverd. U kunt bijvoorbeeld de inhoud vooraf implementeren in het CDN als onderdeel van uw buildscript. U kunt ook compilatie-instructies of vlaggen gebruiken om te beheren hoe de toepassing de resources laadt. In de foutopsporingsmodus kan de toepassing bijvoorbeeld statische resources van een lokale map laden. In de releasemodus gebruikt de toepassing het CDN.

Overweeg de opties voor bestandscompressie, zoals GZip (GNU zip). Compressie kan worden uitgevoerd op de originele server door de host van de webtoepassing of rechtstreeks op de edge-servers door het CDN. Zie De prestaties verbeteren door bestanden in Azure CDN te comprimeren voor meer informatie.

Routering en versiebeheer

U moet wellicht verschillende CDN-exemplaren gebruiken op verschillende tijdstippen. Wanneer u een nieuwe versie van de toepassing implementeert, wilt u bijvoorbeeld een nieuw CDN gebruiken en het oude CDN (met inhoud in een oudere indeling) bewaren voor eerdere versies. Als u Azure Blob-opslag gebruikt als de oorsprong van de inhoud, kunt u een afzonderlijk opslagaccount of een afzonderlijke container maken en het CDN-eindpunt hiernaartoe wijzen.

Gebruik de queryreeks niet om verschillende versies van de toepassing in koppelingen naar resources op het CDN aan te duiden, want wanneer inhoud uit Azure Blob-opslag wordt opgehaald, maakt de queryreeks deel uit van de resourcenaam (de blobnaam). Deze aanpak kan ook invloed hebben op hoe de client resources in de cache opslaat.

Het kan een uitdaging zijn om nieuwe versies van statische inhoud te implementeren wanneer u een toepassing bijwerkt als de vorige resources in de cache op het CDN zijn opgeslagen. Zie de sectie over cachebeheer hieronder voor meer informatie.

Overweeg de toegang tot CDN-inhoud te beperken per land/regio. Met Azure CDN kunt u aanvragen filteren op basis van het land of de regio van herkomst en de geleverde inhoud beperken. Zie De toegang tot uw inhoud beperken per land/regio voor meer informatie.

Cachebeheer

Houd rekening met het beheer van caching in het systeem. In Azure CDN kunt u bijvoorbeeld globale regels voor opslaan in cache instellen en vervolgens aangepaste caching instellen voor bepaalde oorsprongseindpunten. U kunt ook bepalen hoe het opslaan in cache in een CDN wordt uitgevoerd door oorspronkelijke kopteksten van de cache-instructies te verzenden.

Zie How caching works (Hoe caching werkt) voor meer informatie.

Als u wilt voorkomen dat objecten beschikbaar zijn op het CDN, kunt u deze uit de oorsprong verwijderen of het CDN-eindpunt verwijderen. In het geval van blobopslag moet u de container of blob privé maken. Items worden echter pas verwijderd uit het CDN als de time-to-live is verlopen. U kunt ook handmatig een CDN-eindpunt leegmaken.

Beveiliging

Het CDN kan inhoud leveren via standaard-HTTP en via HTTPS (SSL) met behulp van het certificaat dat door het CDN is geleverd. U moet mogelijk HTTPS gebruiken om statische inhoud aan te vragen die wordt weergegeven op pagina's die via HTTPS zijn geladen om browserwaarschuwingen over gemengde inhoud te vermijden.

Als u statische assets zoals lettertypebestanden levert met behulp van het CDN, kunt u te maken krijgen met beleidsproblemen voor dezelfde oorsprong als u een XMLHttpRequest-aanroep gebruikt om deze resources uit een ander domein aan te vragen. Veel webbrowsers voorkomen het delen van cross-origin-resources (CORS), tenzij de webserver is geconfigureerd voor het instellen van de juiste antwoordheaders. U kunt het CDN configureren om CORS te ondersteunen door een van de volgende methoden te gebruiken:

CDN-terugval

Denk na over hoe uw toepassing omgaat met een fout of wanneer het CDN tijdelijk niet beschikbaar is. Clienttoepassingen kunnen mogelijk kopieën gebruiken van de resources die tijdens vorige aanvragen lokaal in de cache zijn opgeslagen (op de client). U kunt ook code toevoegen die fouten detecteert en in plaats daarvan resources van de oorsprong aanvraagt (de toepassingsmap of Azure blob-container met de resources) als het CDN niet beschikbaar is.