CDN-vägledning

Azure Storage
Azure Blob Storage

Ett nätverk för innehållsleverans (CDN, Content Delivery Network) är ett distribuerat nätverk av servrar som effektivt kan leverera webbinnehåll till användare. CDN lagrar cachelagrat innehåll på gränsservrar som är nära slutanvändarna för att minimera svarstiden.

CDN-nät används vanligtvis för att leverera statiskt innehåll, till exempel bilder, formatmallar, dokument, klientskript och HTML-sidor. De stora fördelarna med att använda ett CDN är kortare svarstid och snabbare leverans av innehåll till användare oavsett deras geografiska plats i förhållande till datacentret där programmet körs. CDN-nät kan också hjälpa till med att minska belastningen på ett webbprogram, eftersom programmet inte behöver hantera begäranden för det innehåll som lagrat i CDN.

CDN-diagram

Azure Content Delivery Network är en global CDN-lösning för att leverera innehåll med hög bandbredd som finns i Azure eller på någon annan plats. Med hjälp av Azure CDN kan du cachelagra offentligt tillgängliga objekt som läses in från Azure Blob Storage, en webbapp, virtuell dator eller annan offentligt tillgänglig webbserver.

Det här avsnittet beskriver några allmänna metodtips och överväganden när du använder ett CDN. Mer information finns i Azure CDN.

Hur och varför en CDN används

Det här är några vanliga användningsområden för ett CDN:

  • Leverera statiska resurser för klientprogram, ofta från en webbplats. Dessa resurser kan vara bilder, formatmallar, dokument, filer, klientskript, HTML-sidor, HTML-kod eller annat innehåll som servern inte behöver ändra för varje begäran. Programmet kan skapa objekt vid körning och göra dem tillgängliga för CDN (till exempel genom att skapa en lista över de aktuella nyhetsrubrikerna), men detta görs inte för varje begäran.

  • Att leverera offentlig, statiskt och delat innehåll till enheter som mobiltelefoner och surfplattor. Själva programmet är en webbtjänst som erbjuder ett API till klienter som körs på olika enheter. CDN kan också leverera statiska datauppsättningar (via webbtjänsten) som klienter kan använda, kanske för att generera klientens användargränssnitt. Till exempel kan CDN användas för att distribuera JSON- eller XML-dokument.

  • Betjäna hela webbplatser som endast består av offentligt, statiskt innehåll till klienter, utan att någon särskild beräkningsresurs behövs.

  • Strömma videofiler till klienten på begäran. För video är det en stor fördel med de korta svarstiderna och den tillförlitliga anslutningen hos de globalt utspridda datacenter som erbjuder CDN-anslutningar. Microsoft Azure Media Services (AMS) integreras med Azure CDN för att leverera innehåll direkt till CDN för vidare distribution. Mer information finns i Översikt över strömningsslutpunkter.

  • Allmänt förbättra användarupplevelsen, särskilt för dem som finns långt från det datacenter som är värd för programmet. Dessa användare kan annars få långa svarstider. En stor del av den totala storleken på innehållet i ett webbprogram är ofta statiskt, och att använda CDN kan bidra till att upprätthålla prestanda och övergripande användarupplevelse samtidigt som kravet på att distribuera programmet till flera datacenter elimineras. En lista över aktuella Azure CDN-nodplatser finns i POP-platser för Azure CDN.

  • Som stöd för IoT-lösningar (Sakernas Internet) Det enorma antalet enheter och apparater som är inblandade i en IoT-lösning kan lätt bli överväldigande för ett program om det måste distribuera uppdateringar av inbyggd programvara direkt till varje enhet.

  • Hantera toppar och toppar i efterfrågan utan att kräva att programmet ska skalas, vilket undviker den efterföljande ökningen av driftskostnaderna. När till exempel en uppdatering av ett operativsystem släpps för en maskinvaruenhet som en viss routermodell eller för en konsumentenhet som en smart-TV, blir det en stor belastning i efterfrågan när uppdateringen laddas ned av miljontals användare och enheter under en kort period.

Utmaningar

Det finns flera utmaningar att beakta när du planerar att använda ett CDN.

  • Distribution. Bestäm varifrån CDN hämtar innehållet och om du behöver distribuera innehållet i mer än ett lagringssystem. Beakta processen för distribution av statiskt innehåll och resurser. Du kan behöva implementera ett separata steg för att läsa in innehåll i Azure Blob Storage.

  • Versionshantering och cachekontroll. Överväg hur du ska uppdatera statiskt innehåll och distribuera nya versioner. Förstå hur CDN utför cachelagring och Time to Live (TTL). För Azure CDN, se Så här fungerar cachelagring.

  • Testar. Det kan vara svårt att utföra lokal testning av CDN-inställningarna när du utvecklar och testar ett program lokalt eller i en mellanlagringsmiljö.

  • Sökmotoroptimering (SEO). Innehåll som bilder och dokument hanteras från en annan domän när du använder CDN. Detta kan påverka sökmotoroptimeringen för det här innehållet.

  • Innehållssäkerhet. Inte alla CDN-nät erbjuder någon form av åtkomstkontroll för innehållet. Vissa CDN-tjänster, inklusive Azure CDN, har stöd för tokenbaserad autentisering för att skydda CDN-innehåll. Mer information finns i Securing Azure Content Delivery Network assets with token authentication (Skydda Azure Content Delivery Network-resurser med tokenautentisering).

  • Klientsäkerhet. Klienter kan ansluta från en miljö som inte tillåter åtkomst till resurser på CDN. Detta kan vara en säkerhetsbegränsad miljö som begränsar åtkomsten till endast en uppsättning kända källor, eller en som förhindrar inläsning av resurser från något annat ursprung än sidan. En sekundär implementering krävs för att hantera dessa fall.

  • Återhämtningsförmåga. CDN är en potentiell felkritisk systemdel för ett program.

Scenarier där ett CDN kan vara mindre användbart är:

  • Om innehållet har lågt antal träffar kanske det bara används några få gånger medan det är giltigt (bestäms av dess Time to Live-inställning).

  • Om data är privata, såsom för stora företag eller leveranskedjors ekosystem.

Allmänna riktlinjer och bästa praxis

Att använda ett CDN är ett bra sätt att minimera belastningen på ditt program och maximera tillgänglighet och prestanda. Överväg att använda den här strategin för allt passande innehåll och resurser som programmet använder. Tänk på punkterna i följande avsnitt när du utformar din strategi för att använda ett CDN.

Distribution

Statiskt innehåll kan behöva etableras och distribueras oberoende från programmet om du inte inkluderar det i programdistributionspaketet eller -processen. Överväg hur detta påverkar den metod för versionshantering som du använder för att hantera både programkomponenterna och statiskt resursinnehåll.

Överväg att använda paketerings- och minimeringstekniker för att minska inläsningstiden för klienter. Med paketering kombineras flera filer i en enda fil. Minimering tar bort onödiga tecken från skript och CSS-filer utan att ändra funktioner.

Om du behöver distribuera innehållet till ytterligare en plats blir detta ett extra steg i distributionsprocessen. Om programmet uppdaterar innehållet för CDN, kanske med jämna mellanrum eller som svar på en händelse, måste det uppdaterade innehållet lagras både på eventuella ytterligare platser och på slutpunkten för CDN.

Överväg hur du ska hantera lokal utveckling och testning när en del statiskt innehåll förväntas hanteras från ett CDN. Du kan till exempel distribuera innehållet till CDN i förväg som en del av byggskriptet. Du kan också använda kompileringsdirektiv eller flaggor för att styra hur programmet läser in resurserna. I felsökningsläge kan programmet till exempel läsa in statiska resurser från en lokal mapp. I produktionsläge använder programmet CDN.

Överväg att alternativen för filkomprimering, till exempel gzip (GNU zip). Komprimering kan utföras på den ursprungliga servern av webbprogramsvärden eller direkt på kantservrarna av CDN. Mer information finns i Förbättra prestandan genom att komprimera filer i Azure CDN.

Routning och versionshantering

Du kan behöva använda olika CDN-instanser vid olika tidpunkter. När du till exempel distribuerar en ny version av programmet kanske du vill använda ett nytt CDN och behålla det gamla CDN-nätet (med innehållet i ett äldre format) för tidigare versioner. Om du använder Azure Blob Storage som innehållets ursprung kan du skapa ett separat lagringskonto eller en separat container och peka CDN-slutpunkten dit.

Använd inte frågesträngen för att ange olika versioner av programmet i länkar till resurser på CDN eftersom frågesträngen är en del av resursnamnet (blobnamnet) när innehåll hämtas från Azure Blob Storage. Den här metoden kan också påverka hur klienten cachelagrar resurser.

Det kan vara en utmaning att distribuera nya versioner av statiskt innehåll när du uppdaterar ett program om de äldre resurserna har cachelagrats på CDN. Mer information finns i avsnittet nedan om cachekontroll.

Överväg att begränsa CDN-innehållsåtkomsten efter land/region. Med Azure CDN kan du filtrera begäranden baserat på ursprungsland eller ursprungsregion och begränsa innehållet som levereras. Mer information finns i Begränsa åtkomsten till ditt innehåll efter land/region.

Cachekontroll

Fundera på hur du ska hantera cachelagring i systemet. I Azure CDN kan du till exempel ange globala cachelagringsregler och sedan ange anpassad cachelagring för specifika ursprungsslutpunkter. Du kan också styra hur cachelagring utförs i ett CDN genom att skicka cachelagringsdirektiv till ursprungsplatsen.

Mer information finns i Så här fungerar cachelagring.

Om du vill förhindra att objekt blir tillgängliga i CDN kan du ta bort dem från ursprungsplatsen, ta bort eller ta bort CDN-slutpunkten eller, om det gäller bloblagring, göra containern eller bloben privat. Objekt tas dock inte bort från CDN förrän time to live upphör att gälla. Du kan också manuellt rensa en CDN-slutpunkt.

Säkerhet

CDN kan leverera innehåll över HTTPS (SSL) med hjälp av det certifikat som tillhandahålls av CDN, och även över vanlig HTTP. Om du vill undvika webbläsarvarningar om blandat innehåll kanske du måste använda HTTPS för att begära statiskt innehåll som visas på sidor som läses in via HTTPS.

Om du levererar statiska resurser som teckensnittsfiler med hjälp av CDN kan det uppstå problem med principer om samma ursprung om du använder ett XMLHttpRequest-anrop för att begära dessa resurser från en annan domän. Många webbläsare förhindrar resursdelning för korsande ursprung (CORS, cross-origin resource sharing) om inte webbservern är konfigurerad för att ange lämpliga svarshuvuden. Du kan konfigurera CDN att stödja CORS med någon av följande metoder:

Reservlösning för CDN

Överväg hur programmet ska hantera ett fel eller en temporär otillgänglighet hos CDN. Klientprogram kanske kan använda kopior av resurserna som har cachelagrats lokalt (på klienten) under tidigare begäranden, eller du kan lägga till kod som identifierar fel och i stället begär resurser från ursprunget (programmappen eller Azure-blobcontainern som innehåller resurserna) om CDN inte är tillgängligt.