Osvědčené postupy při používání sítí pro doručování obsahu (CDN)Best practices for using content delivery networks (CDNs)

Síť pro doručování obsahu (CDN) je distribuovaná síť serverů umožňující efektivní doručování webového obsahu uživatelům.A content delivery network (CDN) is a distributed network of servers that can efficiently deliver web content to users. Sítě CDN ukládá obsah uložený v mezipaměti na hraničních serverech, které se blíží koncovým uživatelům, aby se minimalizovala latence.CDNs store cached content on edge servers that are close to end users to minimize latency.

Sítě CDN se obvykle používají k doručování statického obsahu, jako jsou obrázky, šablony stylů, dokumenty, skripty na straně klienta a stránky HTML.CDNs are typically used to deliver static content such as images, style sheets, documents, client-side scripts, and HTML pages. Hlavními výhodami používání sítě CDN jsou nižší latence a rychlejší doručování obsahu uživatelům bez ohledu na jejich zeměpisnou polohu ve vztahu k datacentru, které je hostitelem aplikace.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. Sítě CDN také můžou pomoct se snížením zatížení webové aplikace, protože aplikace nemusí obsluhovat žádosti o obsah hostovaný v síti 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.

Diagram sítě CDN

V Azure představuje Azure Content Delivery Network globálně dostupné řešení sítě CDN pro doručování širokopásmového obsahu hostovaného v Azure nebo v jiném umístění.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. Pomocí Azure CDN můžete ukládat do mezipaměti veřejně dostupné objekty načítané z úložiště objektů blob v Azure, webové aplikace, virtuálního počítače nebo jakéhokoli veřejně přístupného webového serveru.Using Azure CDN, you can cache publicly available objects loaded from Azure blob storage, a web application, virtual machine, any publicly accessible web server.

Toto téma popisuje několik obecných osvědčených postupů a důležitých informací k používání sítě CDN.This topic describes some general best practices and considerations when using a CDN. Další informace najdete v tématu Azure CDN.For more information, see Azure CDN.

Jak a proč se používá síť CDNHow and why a CDN is used

Mezi typické případy použití sítě CDN patří:Typical uses for a CDN include:

  • Doručování statických prostředků pro klientské aplikace, často z webu.Delivering static resources for client applications, often from a website. Těmito prostředky můžou být obrázky, šablony stylů, dokumenty, soubory, skripty na straně klienta, stránky HTML, fragmenty kódu HTML nebo jakýkoli jiný obsah, který server nemusí pro každý požadavek upravovat.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. Aplikace může vytvářet položky za běhu a zpřístupnit je CDN (například vytvořením seznamu titulků aktuálních zpráv), ale nedělá to pro každý požadavek.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.

  • Doručování veřejného statického a sdíleného obsahu do zařízení, jako jsou mobilní telefony a tablety.Delivering public static and shared content to devices such as mobile phones and tablet computers. Vlastní aplikace je webová služba, která nabízí rozhraní API pro klienty běžící na různých zařízení.The application itself is a web service that offers an API to clients running on the various devices. CDN může také klientům doručovat statické datové sady (prostřednictvím webové služby), třeba pro generování uživatelského rozhraní klienta.The CDN can also deliver static datasets (via the web service) for the clients to use, perhaps to generate the client UI. CDN se dá využít například pro distribuci dokumentů XML nebo JSON.For example, the CDN could be used to distribute JSON or XML documents.

  • Obsluha celých webů, které se skládají jenom z veřejného statického obsahu pro klienty a nevyžadují žádné vyhrazené výpočetní prostředky.Serving entire websites that consist of only public static content to clients, without requiring any dedicated compute resources.

  • Streamování videosouborů do klienta na vyžádání.Streaming video files to the client on demand. Video využívá výhod nízké latence a spolehlivého připojení z globálně umístěných datových center, která nabízejí připojení CDN.Video benefits from the low latency and reliable connectivity available from the globally located datacenters that offer CDN connections. Microsoft Azure Media Services (AMS) se integruje s Azure CDN a doručuje obsah přímo do CDN k další distribuci.Microsoft Azure Media Services (AMS) integrates with Azure CDN to deliver content directly to the CDN for further distribution. Další informace najdete v přehledu koncových bodů streamování.For more information, see Streaming endpoints overview.

  • Obecně vylepšení prostředí pro uživatele, především pro ty, kteří jsou umístění daleko od datového centra hostujícího příslušnou aplikaci.Generally improving the experience for users, especially those located far from the datacenter hosting the application. Tito uživatelé se jinak mohou setkávat s vyšší latencí.These users might otherwise suffer higher latency. Velký podíl celkové velikosti obsahu ve webové aplikaci je často statický a používání sítě CDN vám může pomoci udržet výkon a celkové uživatelské prostředí a zároveň eliminovat nutnost nasazení aplikace do více datových center.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. Pokud chcete zobrazit aktuální seznam umístění uzlů CDN, přečtěte si téma Lokality POP v Azure CDN.For a list of Azure CDN node locations, see Azure CDN POP Locations.

  • Podpora řešení Internetu věcí (IoT).Supporting IoT (Internet of Things) solutions. Velký počet zařízení zahrnutých v řešení IoT může snadno zahlcovat aplikaci, pokud musí distribuovat aktualizace firmwaru přímo do každého zařízení.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.

  • Kopírování se špičkami a nárůsty v poptávce bez nutnosti škálovat aplikaci, aby se předešlo navýšení provozních nákladů.Coping with peaks and surges in demand without requiring the application to scale, avoiding the consequent increase in running costs. Například po vydání aktualizace operačního systému pro hardwarové zařízení, jako je třeba konkrétní model směrovače, nebo pro spotřební zařízení, jako je inteligentní TV, nastává obrovská špička poptávky, protože aktualizaci si během krátké doby stahují miliony uživatelů a zařízení.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.

VýzvyChallenges

Existuje několik potenciálních problémů, které je při plánování použití CDN potřeba vzít v úvahu.There are several challenges to take into account when planning to use a CDN.

  • Nasazení.Deployment. Rozhodněte o původu, ze kterého CDN načítá obsah, a jestli tento obsah potřebujete nasadit ve více než jednom systému úložiště.Decide the origin from which the CDN fetches the content, and whether you need to deploy the content in more than one storage system. Vezměte v úvahu proces nasazení statického obsahu a prostředky.Take into account the process for deploying static content and resources. Potřebujete například implementovat samostatný krok pro načtení obsahu do úložiště objektů blob Azure.For example, you may need to implement a separate step to load content into Azure blob storage.

  • Správa verzí a řízení mezipaměti.Versioning and cache-control. Zvažte, jak budete aktualizovat statický obsah a nasazovat nové verze.Consider how you will update static content and deploy new versions. Seznamte se se způsobem, kterým CDN řeší ukládání v mezipaměti a čas TTL (Time to Live).Understand how the CDN performs caching and time-to-live (TTL). V případě Azure CDN si přečtěte téma Jak funguje ukládání do mezipaměti.For Azure CDN, see How caching works.

  • Testování.Testing. Může být obtížné provést místní testování nastavení CDN, když aplikaci vyvíjíte a testujete místně nebo v přípravném prostředí.It can be difficult to perform local testing of your CDN settings when developing and testing an application locally or in a staging environment.

  • Optimalizace vyhledávacích webů (SEO).Search engine optimization (SEO). Pokud používáte CDN, obsah, jako jsou obrázky a dokumenty, se obsluhuje z různých domén.Content such as images and documents are served from a different domain when you use the CDN. To může mít vliv na SEO pro tento obsah.This can have an effect on SEO for this content.

  • Zabezpečení obsahu.Content security. Ne všechny sítě CDN nabízejí pro obsah nějakou formu řízení přístupu.Not all CDNs offer any form of access control for the content. Některé služby CDN, včetně Azure CDN, v rámci ochrany obsahu CDN podporují ověřování na základě tokenu.Some CDN services, including Azure CDN, support token-based authentication to protect CDN content. Další informace najdete v tématu věnovaném zabezpečení prostředků sítě Azure Content Delivery Network prostředky pomocí ověření tokenu.For more information, see Securing Azure Content Delivery Network assets with token authentication.

  • Zabezpečení klientů.Client security. Klienti se mohou připojovat z prostředí, které neumožňuje přístup k prostředkům v CDN.Clients might connect from an environment that does not allow access to resources on the CDN. Může se jednat o prostředí s omezením na základě zabezpečení, které omezuje přístup jenom na sadu známých zdrojů, nebo o prostředí, které brání načítání prostředků odjinud než ze zdroje stránky.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. Pro řešení těchto případů se vyžaduje záložní implementace.A fallback implementation is required to handle these cases.

  • Odolnost.Resilience. CDN je pro aplikace potenciálním kritickým prvkem způsobujícím selhání.The CDN is a potential single point of failure for an application.

Scénáře, ve kterých může být CDN méně užitečné, zahrnují:Scenarios where a CDN may be less useful include:

  • Pokud má obsah nízký počet přístupů, může se k němu po dobu jeho platnosti přistupovat jenom několikrát (to je dáno jeho nastavením TTL).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).

  • Pokud jsou data privátní, například pro velké podniky nebo ekosystémy zásobovacích řetězců.If the data is private, such as for large enterprises or supply chain ecosystems.

Obecné pokyny a osvědčené postupyGeneral guidelines and good practices

Použití CDN je dobrým způsobem, jak minimalizovat zatížení aplikace a maximalizovat její dostupnost a výkon.Using a CDN is a good way to minimize the load on your application, and maximize availability and performance. Zvažte použití této strategie pro veškerý příslušný obsah a prostředky, které vaše aplikace používá.Consider adopting this strategy for all of the appropriate content and resources your application uses. Při návrhu strategie použití CDN se zamyslete i nad body uvedenými v následujících oddílech.Consider the points in the following sections when designing your strategy to use a CDN.

NasazeníDeployment

Je možné, že se statický obsah bude muset zřizovat a nasazovat nezávisle na aplikaci, pokud ho nezahrnete do procesu nebo balíčku pro nasazení aplikace.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. Zvažte, jak to ovlivní přístup ke správě verzí, který používáte při správě komponent aplikace a obsahu statických prostředků.Consider how this will affect the versioning approach you use to manage both the application components and the static resource content.

Zvažte použití technik sdružování a minifikace, abyste zkrátili dobu načítání pro klienty.Consider using bundling and minification techniques to reduce load times for clients. Sdružování kombinuje několik souborů do jediného souboru.Bundling combines multiple files into a single file. Minifikace odebírá nepotřebné znaky ze skriptů a souborů CSS, aniž by se změnila jejich funkce.Minification removes unnecessary characters from scripts and CSS files without altering functionality.

Pokud potřebujete nasadit obsah do dalšího umístění, bude to v procesu nasazení znamenat další krok.If you need to deploy the content to an additional location, this will be an extra step in the deployment process. Pokud aplikace aktualizuje obsah pro CDN, třeba v pravidelných intervalech nebo jako reakci na nějakou událost, musí ukládat aktualizovaný obsah ve všech dalších umístěních a také v koncovém bodě pro 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.

Zvažte, jak přistupovat k místnímu vývoji a testování, pokud se očekává poskytování části statického obsahu z CDN.Consider how you will handle local development and testing when some static content is expected to be served from a CDN. Obsah můžete například přednasadit do sítě CDN jako součást skriptu sestavení.For example, you could predeploy the content to the CDN as part of your build script. Další možností je použít příznaky nebo direktivy kompilace a řídit, jak aplikace načítá prostředky.Alternatively, use compile directives or flags to control how the application loads the resources. Například v režimu ladění může aplikace načítat statické prostředky z místní složky.For example, in debug mode, the application could load static resources from a local folder. V režimu vydání by aplikace využila CDN.In release mode, the application would use the CDN.

Vezměte v úvahu možnosti komprese souborů, například gzip (GNU zip).Consider the options for file compression, such as gzip (GNU zip). Komprese se může provádět na původním serveru hostováním webových aplikací nebo přímo na hraničních serverech prostřednictvím CDN.Compression may be performed on the origin server by the web application hosting or directly on the edge servers by the CDN. Další informace najdete v tématu Vylepšení výkonu prostřednictvím komprimace souborů v Azure CDN.For more information, see Improve performance by compressing files in Azure CDN.

Směrování a správa verzíRouting and versioning

Je možné, že v různé době budete muset používat různé instance CDN.You may need to use different CDN instances at various times. Například když nasadíte novou verzi aplikace, můžete chtít použít nové CDN a pro předchozí verze zachovat původní CDN (uchovává obsah ve starším formátu).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. Pokud jako zdroj obsahu používáte úložiště objektů blob v Azure, můžete vytvořit samostatný účet úložiště nebo samostatný kontejner a nasměrovat na něj koncový bod CDN.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.

K označení různých verzí aplikace v odkazech na prostředky v CDN nepoužívejte řetězec dotazu, protože při načítání obsahu z úložiště objektů blob v Azure je řetězec dotazu součástí názvu prostředku (název objektu blob).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). Tento přístup může také ovlivnit to, jakým způsobem klient ukládá prostředky do mezipaměti.This approach can also affect how the client caches resources.

Nasazování nových verzí statického obsahu při aktualizaci aplikace může být složité, pokud jsou předchozí prostředky uložené v mezipaměti v síti 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. Další informace najdete dál v části věnované řízení mezipaměti.For more information, see the section on cache control, below.

Zvažte omezení přístupu k obsahu CDN podle země.Consider restricting the CDN content access by country. Azure CDN umožňuje filtrovat požadavky podle země původu a omezit doručovaný obsah.Azure CDN allows you to filter requests based on the country of origin and restrict the content delivered. Další informace najdete v tématu věnovaném omezení přístupu k obsahu podle země.For more information, see Restrict access to your content by country.

Řízení mezipamětiCache control

Zamyslete se nad tím, jak v systému spravovat ukládání do mezipaměti.Consider how to manage caching within the system. Například v Azure CDN můžete nastavit globální pravidla pro ukládání do mezipaměti a potom nastavit vlastní pravidla pro ukládání do mezipaměti pro konkrétní koncové body.For example, in Azure CDN, you can set global caching rules, and then set custom caching for particular origin endpoints. Způsob ukládání do mezipaměti v CDN můžete také řídit odesíláním hlaviček direktiv pro mezipaměť původnímu zdroji.You can also control how caching is performed in a CDN by sending cache-directive headers at the origin.

Další informace najdete v článku Jak funguje ukládání do mezipaměti.For more information, see How caching works.

Pokud chcete zabránit dostupnosti objektů v CDN, můžete je odstranit z původního zdroje, odebrat nebo odstranit koncový bod CDN nebo v případě úložiště objektů blob nastavit kontejner nebo objekt blob jako privátní.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. Položky se ale z CDN neodstraňují, dokud nevyprší doba do provozu.However, items are not removed from the CDN until the time-to-live expires. Můžete také ručně vyprázdnit koncový bod CDN.You can also manually purge a CDN endpoint.

ZabezpečeníSecurity

CDN může doručovat obsah přes HTTPS (SSL), s využitím certifikátu poskytnutého CDN a také přes standardní HTTP.The CDN can deliver content over HTTPS (SSL), by using the certificate provided by the CDN, as well as over standard HTTP. Abyste se vyhnuli upozorněním prohlížeče na smíšený obsah, budete k vyžádání statického obsahu, který se zobrazuje na stránkách načtených prostřednictvím HTTPS, možná muset použít protokol 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.

Pokud k doručování statických prostředků, jako jsou například soubory písem, používáte CDN, můžete se použití volání XMLHttpRequest k vyžádání těchto prostředků z jiné domény setkat s potížemi způsobenými zásadami stejného původu.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. Celá řada webových prohlížečů zabraňuje sdílení prostředků různého původu (CORS), pokud webový server není nakonfigurovaný k nastavení odpovídajících hlaviček odpovědi.Many web browsers prevent cross-origin resource sharing (CORS) unless the web server is configured to set the appropriate response headers. Ke konfiguraci podpory CORS v CDN můžete použít jednu z následujících metod:You can configure the CDN to support CORS by using one of the following methods:

Záložní CDNCDN fallback

Zamyslete se nad tím, co se ve vaší aplikaci stane v případě selhání nebo dočasné nedostupnosti CDN.Consider how your application will cope with a failure or temporary unavailability of the CDN. Pokud není k dispozici CDN, klientské aplikace pravděpodobně budou mít možnost použít kopie prostředků, které byly místně uložené do mezipaměti (na straně klienta) během předchozích požadavků, nebo mohou obsahovat kód, který detekuje selhání a vyžádá si prostředky z původního zdroje (složky aplikace nebo kontejneru objektů blob v Azure, který příslušné prostředky obsahuje).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.