Metodtips för nätverk för innehållsleverans (CDN-nät)Best practices for using content delivery networks (CDNs)

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.A content delivery network (CDN) is a distributed network of servers that can efficiently deliver web content to users. CDN lagrar cachelagrat innehåll på gräns servrar som är nära slutanvändare för att minimera svars tiden.CDNs store cached content on edge servers that are close to end users to minimize latency.

CDN-nät används vanligtvis för att leverera statiskt innehåll, till exempel bilder, formatmallar, dokument, klientskript och HTML-sidor.CDNs are typically used to deliver static content such as images, style sheets, documents, client-side scripts, and HTML pages. 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.The major advantages of using a CDN are lower latency and faster delivery of content to users, regardless of their geographical location in relation to the datacenter where the application is hosted. 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.CDNs can also help to reduce load on a web application, because the application does not have to service requests for the content that is hosted in the 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.In Azure, the Azure Content Delivery Network is a global CDN solution for delivering high-bandwidth content that is hosted in Azure or any other location. 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.Using Azure CDN, you can cache publicly available objects loaded from Azure blob storage, a web application, virtual machine, any publicly accessible web server.

Det här avsnittet beskriver några allmänna metodtips och överväganden när du använder ett CDN.This topic describes some general best practices and considerations when using a CDN. Mer information finns i Azure CDN.For more information, see Azure CDN.

Hur och varför en CDN användsHow and why a CDN is used

Det här är några vanliga användningsområden för ett CDN:Typical uses for a CDN include:

  • Leverera statiska resurser för klientprogram, ofta från en webbplats.Delivering static resources for client applications, often from a website. 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.These resources can be images, style sheets, documents, files, client-side scripts, HTML pages, HTML fragments, or any other content that the server does not need to modify for each request. 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.The application can create items at runtime and make them available to the CDN (for example, by creating a list of current news headlines), but it does not do so for each request.

  • Att leverera offentlig, statiskt och delat innehåll till enheter som mobiltelefoner och surfplattor.Delivering public static and shared content to devices such as mobile phones and tablet computers. Själva programmet är en webbtjänst som erbjuder ett API till klienter som körs på olika enheter.The application itself is a web service that offers an API to clients running on the various devices. CDN kan också leverera statiska datauppsättningar (via webbtjänsten) som klienter kan använda, kanske för att generera klientens användargränssnitt.The CDN can also deliver static datasets (via the web service) for the clients to use, perhaps to generate the client UI. Till exempel kan CDN användas för att distribuera JSON- eller XML-dokument.For example, the CDN could be used to distribute JSON or XML documents.

  • 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.Serving entire websites that consist of only public static content to clients, without requiring any dedicated compute resources.

  • Strömma videofiler till klienten på begäran.Streaming video files to the client on demand. 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.Video benefits from the low latency and reliable connectivity available from the globally located datacenters that offer CDN connections. Microsoft Azure Media Services (AMS) integreras med Azure CDN för att leverera innehåll direkt till CDN för vidare distribution.Microsoft Azure Media Services (AMS) integrates with Azure CDN to deliver content directly to the CDN for further distribution. Mer information finns i Översikt över strömningsslutpunkter.For more information, see Streaming endpoints overview.

  • 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.Generally improving the experience for users, especially those located far from the datacenter hosting the application. Dessa användare kan annars få långa svarstider.These users might otherwise suffer higher latency. En stor del av den totala storleken på innehållet i ett webb program är ofta statisk, och användningen av CDN kan vara till hjälp för att upprätthålla prestanda och den övergripande användar upplevelsen, samtidigt som kravet på att distribuera programmet till flera data Center elimineras.A large proportion of the total size of the content in a web application is often static, and using the CDN can help to maintain performance and overall user experience while eliminating the requirement to deploy the application to multiple datacenters. En lista över aktuella Azure CDN-nodplatser finns i POP-platser för Azure CDN.For a list of Azure CDN node locations, see Azure CDN POP Locations.

  • Som stöd för IoT-lösningar (Sakernas Internet)Supporting IoT (Internet of Things) solutions. 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.The huge numbers of devices and appliances involved in an IoT solution could easily overwhelm an application if it had to distribute firmware updates directly to each device.

  • Kopiera med toppar och toppar i efter frågan utan att programmet behöver skalas för att undvika den efterföljande ökningen vid löpande kostnader.Coping with peaks and surges in demand without requiring the application to scale, avoiding the consequent increase in running costs. 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.For example, when an update to an operating system is released for a hardware device such as a specific model of router, or for a consumer device such as a smart TV, there will be a huge peak in demand as it is downloaded by millions of users and devices over a short period.

UtmaningarChallenges

Det finns flera utmaningar att beakta när du planerar att använda ett CDN.There are several challenges to take into account when planning to use a CDN.

  • Distribution.Deployment. Bestäm varifrån CDN hämtar innehållet och om du behöver distribuera innehållet i mer än ett lagringssystem.Decide the origin from which the CDN fetches the content, and whether you need to deploy the content in more than one storage system. Beakta processen för distribution av statiskt innehåll och resurser.Take into account the process for deploying static content and resources. Du kan behöva implementera ett separata steg för att läsa in innehåll i Azure Blob Storage.For example, you may need to implement a separate step to load content into Azure blob storage.

  • Versionshantering och cachekontroll.Versioning and cache-control. Överväg hur du ska uppdatera statiskt innehåll och distribuera nya versioner.Consider how you will update static content and deploy new versions. Förstå hur CDN utför cachelagring och Time to Live (TTL).Understand how the CDN performs caching and time-to-live (TTL). För Azure CDN, se Så här fungerar cachelagring.For Azure CDN, see How caching works.

  • Testar.Testing. 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ö.It can be difficult to perform local testing of your CDN settings when developing and testing an application locally or in a staging environment.

  • Sökmotoroptimering (SEO).Search engine optimization (SEO). Innehåll som bilder och dokument hanteras från en annan domän när du använder CDN.Content such as images and documents are served from a different domain when you use the CDN. Detta kan påverka sökmotoroptimeringen för det här innehållet.This can have an effect on SEO for this content.

  • Innehållssäkerhet.Content security. Inte alla CDN-nät erbjuder någon form av åtkomstkontroll för innehållet.Not all CDNs offer any form of access control for the content. Vissa CDN-tjänster, inklusive Azure CDN, har stöd för tokenbaserad autentisering för att skydda CDN-innehåll.Some CDN services, including Azure CDN, support token-based authentication to protect CDN content. Mer information finns i Securing Azure Content Delivery Network assets with token authentication (Skydda Azure Content Delivery Network-resurser med tokenautentisering).For more information, see Securing Azure Content Delivery Network assets with token authentication.

  • Klientsäkerhet.Client security. Klienter kan ansluta från en miljö som inte tillåter åtkomst till resurser på CDN.Clients might connect from an environment that does not allow access to resources on the 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.This could be a security-constrained environment that limits access to only a set of known sources, or one that prevents loading of resources from anything other than the page origin. En sekundär implementering krävs för att hantera dessa fall.A fallback implementation is required to handle these cases.

  • Återhämtningsförmåga.Resilience. CDN är en potentiell felkritisk systemdel för ett program.The CDN is a potential single point of failure for an application.

Scenarier där CDN kan vara mindre användbart är:Scenarios where a CDN may be less useful include:

  • 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).If the content has a low hit rate, it might be accessed only few times while it is valid (determined by its time-to-live setting).

  • Om data är privata, såsom för stora företag eller leveranskedjors ekosystem.If the data is private, such as for large enterprises or supply chain ecosystems.

Allmänna riktlinjer och bästa praxisGeneral guidelines and good practices

Att använda ett CDN är ett bra sätt att minimera belastningen på ditt program och maximera tillgänglighet och prestanda.Using a CDN is a good way to minimize the load on your application, and maximize availability and performance. Överväg att använda den här strategin för allt passande innehåll och resurser som programmet använder.Consider adopting this strategy for all of the appropriate content and resources your application uses. Tänk på punkterna i följande avsnitt när du utformar din strategi för att använda ett CDN.Consider the points in the following sections when designing your strategy to use a CDN.

DistributionDeployment

Statiskt innehåll kan behöva etableras och distribueras oberoende från programmet om du inte inkluderar det i programdistributionspaketet eller -processen.Static content may need to be provisioned and deployed independently from the application if you do not include it in the application deployment package or process. Ö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.Consider how this will affect the versioning approach you use to manage both the application components and the static resource content.

Överväg att använda paketerings- och minimeringstekniker för att minska inläsningstiden för klienter.Consider using bundling and minification techniques to reduce load times for clients. Med paketering kombineras flera filer i en enda fil.Bundling combines multiple files into a single file. Minimering tar bort onödiga tecken från skript och CSS-filer utan att ändra funktioner.Minification removes unnecessary characters from scripts and CSS files without altering functionality.

Om du behöver distribuera innehållet till ytterligare en plats blir detta ett extra steg i distributionsprocessen.If you need to deploy the content to an additional location, this will be an extra step in the deployment process. 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.If the application updates the content for the CDN, perhaps at regular intervals or in response to an event, it must store the updated content in any additional locations as well as the endpoint for the 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.Consider how you will handle local development and testing when some static content is expected to be served from a CDN. Du kan till exempel Fördistribuera innehållet till CDN som en del av bygg skriptet.For example, you could predeploy the content to the CDN as part of your build script. Du kan också använda kompileringsdirektiv eller flaggor för att styra hur programmet läser in resurserna.Alternatively, use compile directives or flags to control how the application loads the resources. I felsökningsläge kan programmet till exempel läsa in statiska resurser från en lokal mapp.For example, in debug mode, the application could load static resources from a local folder. I produktionsläge använder programmet CDN.In release mode, the application would use the CDN.

Överväg att alternativen för filkomprimering, till exempel gzip (GNU zip).Consider the options for file compression, such as gzip (GNU zip). Komprimering kan utföras på den ursprungliga servern av webbprogramsvärden eller direkt på kantservrarna av CDN.Compression may be performed on the origin server by the web application hosting or directly on the edge servers by the CDN. Mer information finns i Förbättra prestandan genom att komprimera filer i Azure CDN.For more information, see Improve performance by compressing files in Azure CDN.

Routning och versionshanteringRouting and versioning

Du kan behöva använda olika CDN-instanser vid olika tidpunkter.You may need to use different CDN instances at various times. 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.For example, when you deploy a new version of the application you may want to use a new CDN and retain the old CDN (holding content in an older format) for previous versions. 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.If you use Azure blob storage as the content origin, you can create a separate storage account or a separate container and point the CDN endpoint to it.

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.Do not use the query string to denote different versions of the application in links to resources on the CDN because, when retrieving content from Azure blob storage, the query string is part of the resource name (the blob name). Den här metoden kan också påverka hur klienten cachelagrar resurser.This approach can also affect how the client caches resources.

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.Deploying new versions of static content when you update an application can be a challenge if the previous resources are cached on the CDN. Mer information finns i avsnittet nedan om cachekontroll.For more information, see the section on cache control, below.

Överväg att begränsa CDN-innehållets åtkomst efter land/region.Consider restricting the CDN content access by country/region. Med Azure CDN kan du filtrera förfrågningar baserat på ursprungslandet eller regionen och begränsa det levererade innehållet.Azure CDN allows you to filter requests based on the country or region of origin and restrict the content delivered. Mer information finns i begränsa åtkomsten till ditt innehåll efter land/region.For more information, see Restrict access to your content by country/region.

CachekontrollCache control

Fundera på hur du ska hantera cachelagring i systemet.Consider how to manage caching within the system. I Azure CDN kan du till exempel ange globala regler för cachelagring och sedan ange anpassad cachelagring för särskilda ursprungs slut punkter.For example, in Azure CDN, you can set global caching rules, and then set custom caching for particular origin endpoints. Du kan också styra hur cachelagring utförs i ett CDN genom att skicka cachelagringsdirektiv till ursprungsplatsen.You can also control how caching is performed in a CDN by sending cache-directive headers at the origin.

Mer information finns i Så här fungerar cachelagring.For more information, see How caching works.

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.To prevent objects from being available on the CDN, you can delete them from the origin, remove or delete the CDN endpoint, or in the case of blob storage, make the container or blob private. Objekt tas dock inte bort från CDN förrän Time-to-Live upphör att gälla.However, items are not removed from the CDN until the time-to-live expires. Du kan också manuellt rensa en CDN-slutpunkt.You can also manually purge a CDN endpoint.

SäkerhetSecurity

CDN kan leverera innehåll över HTTPS (SSL) med hjälp av det certifikat som tillhandahålls av CDN, och även över vanlig HTTP.The CDN can deliver content over HTTPS (SSL), by using the certificate provided by the CDN, as well as over standard 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.To avoid browser warnings about mixed content, you might need to use HTTPS to request static content that is displayed in pages loaded through 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.If you deliver static assets such as font files by using the CDN, you might encounter same-origin policy issues if you use an XMLHttpRequest call to request these resources from a different domain. 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.Many web browsers prevent cross-origin resource sharing (CORS) unless the web server is configured to set the appropriate response headers. Du kan konfigurera CDN att stödja CORS med någon av följande metoder:You can configure the CDN to support CORS by using one of the following methods:

Reservlösning för CDNCDN fallback

Överväg hur programmet ska hantera ett fel eller en temporär otillgänglighet hos CDN.Consider how your application will cope with a failure or temporary unavailability of the 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.Client applications may be able to use copies of the resources that were cached locally (on the client) during previous requests, or you can include code that detects failure and instead requests resources from the origin (the application folder or Azure blob container that holds the resources) if the CDN is unavailable.