Síť pro doručování obsahu (CDN) je distribuovaná síť serverů, které mohou uživatelům efektivně doručovat webový obsah. Sítě CDN ukládají obsah uložený v mezipaměti na hraničních serverech, které jsou blízko koncovým uživatelům, aby se minimalizovala latence.
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. 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. 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.
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í. Pomocí služby Azure Content Delivery Network můžete ukládat veřejně dostupné objekty do mezipaměti načtené z úložiště objektů blob v Azure, webové aplikace, virtuálního počítače, libovolného veřejně přístupného webového serveru.
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. Další informace najdete v tématu Azure CDN.
Jak a proč se používá síť CDN
Mezi typické případy použití sítě CDN patří:
Doručování statických prostředků pro klientské aplikace, často z webu. 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. 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.
Doručování veřejného statického a sdíleného obsahu do zařízení, jako jsou mobilní telefony a tablety. Vlastní aplikace je webová služba, která nabízí rozhraní API pro klienty běžící na různých zařízení. 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. CDN se dá využít například pro distribuci dokumentů XML nebo JSON.
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.
Streamování videosouborů do klienta na vyžádání. 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. Služba Microsoft Azure Media Services se integruje se službou Azure Content Delivery Network za účelem doručování obsahu přímo do CDN pro další distribuci. Další informace najdete v přehledu koncových bodů streamování.
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. Tito uživatelé se jinak mohou setkávat s vyšší latencí. Velká část celkové velikosti obsahu ve webové aplikaci je často statická a použití SÍTĚ CDN může pomoct udržet výkon a celkové uživatelské prostředí a zároveň eliminovat požadavek na nasazení aplikace do více datových center. Seznam umístění uzlů Azure Content Delivery Network najdete v tématu Umístění POP v Azure CDN.
Podpora řešení Internetu věcí (IoT). 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í.
Zvládnutí špiček a nárůstů poptávky bez nutnosti škálování aplikace, aby se zabránilo následnému zvýšení běhu nákladů. 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í.
Výzvy
Existuje několik potenciálních problémů, které je při plánování použití CDN potřeba vzít v úvahu.
Nasazení: 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ě. Vezměte v úvahu proces nasazení statického obsahu a prostředky. Potřebujete například implementovat samostatný krok pro načtení obsahu do úložiště objektů blob Azure.
Správa verzí a řízení mezipaměti. Zvažte, jak budete aktualizovat statický obsah a nasazovat nové verze. Seznamte se se způsobem, kterým CDN řeší ukládání v mezipaměti a čas TTL (Time to Live). Informace o službě Azure Content Delivery Network najdete v tématu Jak funguje ukládání do mezipaměti.
Testování. 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í.
Optimalizace vyhledávacích webů (SEO). Pokud používáte CDN, obsah, jako jsou obrázky a dokumenty, se obsluhuje z různých domén. To může mít vliv na SEO pro tento obsah.
Zabezpečení obsahu. Ne všechny sítě CDN nabízejí pro obsah nějakou formu řízení přístupu. Některé služby CDN, včetně služby Azure Content Delivery Network, podporují ověřování na základě tokenů za účelem ochrany obsahu CDN. 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.
Zabezpečení klientů. Klienti se mohou připojovat z prostředí, které neumožňuje přístup k prostředkům v 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. Pro řešení těchto případů se vyžaduje záložní implementace.
Odolnost. CDN je pro aplikace potenciálním kritickým prvkem způsobujícím selhání.
Mezi scénáře, ve kterých může být síť CDN méně užitečná, patří:
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).
Pokud jsou data privátní, například pro velké podniky nebo ekosystémy zásobovacích řetězců.
Obecné pokyny a osvědčené postupy
Použití CDN je dobrým způsobem, jak minimalizovat zatížení aplikace a maximalizovat její dostupnost a výkon. Zvažte použití této strategie pro veškerý příslušný obsah a prostředky, které vaše aplikace používá. Při návrhu strategie použití CDN se zamyslete i nad body uvedenými v následujících oddílech.
Nasazení
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. 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ů.
Zvažte použití technik sdružování a minifikace, abyste zkrátili dobu načítání pro klienty. Sdružování kombinuje několik souborů do jediného souboru. Minifikace odebírá nepotřebné znaky ze skriptů a souborů CSS, aniž by se změnila jejich funkce.
Pokud potřebujete nasadit obsah do dalšího umístění, bude to v procesu nasazení znamenat další krok. 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.
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. Jako součást skriptu sestavení můžete například předem připravit obsah do CDN. Další možností je použít příznaky nebo direktivy kompilace a řídit, jak aplikace načítá prostředky. Například v režimu ladění může aplikace načítat statické prostředky z místní složky. V režimu vydání by aplikace využila CDN.
Vezměte v úvahu možnosti komprese souborů, například 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. Další informace najdete v tématu Vylepšení výkonu prostřednictvím komprimace souborů v Azure CDN.
Směrování a správa verzí
Je možné, že v různé době budete muset používat různé instance CDN. 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). 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.
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). Tento přístup může také ovlivnit to, jakým způsobem klient ukládá prostředky do mezipaměti.
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. Další informace najdete dál v části věnované řízení mezipaměti.
Zvažte omezení přístupu k obsahu CDN podle země nebo oblasti. Azure Content Delivery Network umožňuje filtrovat požadavky na základě země nebo oblasti původu a omezit obsah doručený. Další informace najdete v tématu Omezení přístupu k obsahu podle země nebo oblasti.
Řízení mezipaměti
Zamyslete se nad tím, jak v systému spravovat ukládání do mezipaměti. Například ve službě Azure Content Delivery Network můžete nastavit globální pravidla ukládání do mezipaměti a pak nastavit vlastní ukládání do mezipaměti pro konkrétní koncové body původu. 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.
Další informace najdete v článku Jak funguje ukládání do mezipaměti.
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í. Položky se ale z CDN neodeberou, dokud nevyprší platnost času naživo. Můžete také ručně vyprázdnit koncový bod CDN.
Zabezpečení
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. 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.
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. 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. Ke konfiguraci podpory CORS v CDN můžete použít jednu z následujících metod:
Nakonfigurujte CDN pro přidávání hlaviček CORS k odpovědím. Další informace najdete v tématu věnovaném použití Azure CDN s CORS.
Pokud je zdrojem úložiště objektů blob v Azure, přidejte pravidla CORS pro koncový bod úložiště. Další informace najdete v tématu věnovaném podpoře sdílení prostředků různého původů (CORS) pro služby Azure Storage.
Nakonfigurujte aplikaci, aby nastavila hlavičky CORS. Viz například Povolení žádostí mezi zdroji (CORS) v dokumentaci ASP.NET Core.
Záložní CDN
Zamyslete se nad tím, co se ve vaší aplikaci stane v případě selhání nebo dočasné nedostupnosti 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).