
Office 365 CDN
- Posted by Jan Vaněk
- On 2.2.2020
- In Nezařazené
- 0
Autor článku: Jan Vaněk
Co to je CDN?
Obecně je CDN soustava proxy a file serverů, která je rozmístěna po celém světě, a je spojena vysokorychlostními linkami s datovými centry. Jejich cílem je hostovat statický obsah a poskytnout ho uživateli z co nejbližšího místa, co nejrychleji. Jedná se v podstatě o souborové cache. Používají se ke zrychlení webových aplikací, kdy frontend server aplikace poskytuje dynamický obsah (data) a CDN poskytuje statické obrázky, javascripty, kaskádní styly a podobně. Tím se kromě jiného uleví backendu a databázi tak, aby se jeho výkon mohl použít na užitečný obsah.
Office 365 (včetně SharePointu Online) využívá CDN sám o sobě, ale bez možnosti konfigurace nebo použití pro naše účely. Proto je v dokumentaci k SPO uvedeno, že musí být pro klienty dosažitelné následující domény: *.sharepointonline.com, cdn.sharepointonline.com, privatecdn.sharepointonline.com, publiccdn.sharepointonline.com, spoprod-a.akamaihd.net, static.sharepointonline.com. Existují i specializované CDN jako např. Microsoft Ajax CDN, kde je hostováno jQuery, ASP.NET Ajax, Bootstrap, Knockout.js.
Dalším typem jsou univerzální CDN jako je Azure CDN nebo Akamai a další do nichž si také můžete „odložit“ statický obsah. Výhoda využití Office 365 CDN oproti nim je v tom, že je dostupná v rámci Office 365 předplatného (nestojí tedy nic navíc), přímo se integruje se SharePointem Online a má, byť omezenou podporu, oprávnění. Přínos Office 365 CDN je i v tom, že podporuje protokol HTTP/2, který je efektivnější než HTTP/1.1. Nicméně tím, že SharePoint Online v mnoha případech už CDN pro systémové věci používá, tak přínos v tomto není podle mých měření příliš velký.
Důležité termíny
Origins – zdroj pro CDN. Místo odkud se kopíruje obsah do CDN sítě, může to být adresář, knihovna dokumentů, web
Public/private – typ zdroje. K souborům z public zdrojů má přístup každý, kdo zná URL (bez ověřování). Na soubory z private zdrojů jsou v CDN aplikována oprávnění.
Politiky – pravidla, která se aplikují na všechny private/public CDN zdroje podle definice – co se má ze zdrojů v SPO kopírovat do CDN. Povolují se přípony, ale i soubory z tagovaných webů. Lze omezit, že zdrojem může být pouze web
Publikace a odstranění souborů
Public
Při přidání souboru (musí odpovídat politikám) do zdrojové knihovny je soubor do několika minut publikován na CDN serverech. Odstraněný obsah z public je dostupný ještě 30 dní z cache, ale odkazy na obsah jsou zneplatněny do 15 minut. Soubory umístěné publikované do CDN mají následující strukturu URL:
Ve výchozím nastavení jsou z public zdrojů do CDN kopírovány soubory následujících přípon:
.css, .eot, .gif, .ico, .jpeg, .jpg, .js, .map, .png, .svg, .ttf, a .woff
A výchozími public zdroji jsou:
*/masterpage
*/style library
*/clientsideassets
Pokud budete zkoušet fungování odkazů do public CDN, nezapomeňte, že se kontroluje hlavička referal. Bez její správné hodnoty (adresa vašeho SPO) URL nebude fungovat. Takže prosté zkopírování adresy do nového okna prohlížeče povede k chybě typu access denied.
S ohledem na anonymní přístup do, nemělo by do public CDN přijít nic citlivého, co byste nedali např. na váš veřejně dostupný web.
Private
Slouží k uložení statických souborů, jejichž obsah je citlivý. Není možný přímí přístup k takto vypublikovaným souborům, musí dojít k odkazu ze SharePointu Online. Kontroluje se nejen hlavička referal (jako u public zdrojů), ale i časově omezené (30-60min dle dokumentace) tokeny, které musí být součástí URL. Odstraněný obsah z private je dostupný ještě 1 hodinu z cache, ale odkazy na obsah jsou zneplatněny do 15 minut k přístupu je nutné oprávnění v originálním zdroji (alespoň read). Nehraje se na oprávnění položky (ani kdyby měla individuálně nastavená oprávnění), ale oprávnění se řeší na úrovni adresáře.
Takto může vypadat odkaz na položku v private CDN:
https://tenant.sharepoint.com/sites/site/…) na do tvaru s privatecdn. A to včetně použití ve script editor webové části. Jen dejte pozor, že k tomu začne docházet až po vypublikování hlavní verze stránky.

Ve výchozím nastavení jsou z private zdrojů do CDN kopírovány soubory následujících přípon:
.gif, .ico, .jpeg, .jpg, .js, and .png
Výchozími private zdroji jsou:
*/userphoto.aspx
*/siteassets
Pokud u konkrétního souboru z nějakého důvodu potřebujete mechanismus změny URL vypnout (tedy zachovat odkaz do SPO i kdyby byl soubor publikován do CDN), můžete k odkazu na soubor přidat parametr ?noautorewrites=true. Toto platí jak pro public tak private CDN.
Konfigurace
Office 365 CDN se zapíná a spravuje pomocí PowerShellu.
Zapnutí/vypnutí: Set-PnPTenantCdnEnabled -Enable [$true|$false] -CdnType [Public|Private|Both]
Pozor, bude trval cca 15-20 minut, než se změna projeví.
Přidání knihovny na webech jako zdroj do public CDN: Add-PnPTenantCdnOrigin -CdnType public -OriginUrl */CDNLIBRARY
Nastavení politik: Set-PnPTenantCdnPolicy -CdnType [Public|Private] -PolicyType [IncludeFileExtensions|ExcludeRestrictedSiteClassifications|ExcludeIfNoScriptDisabled] -PolicyValue [string]
SPFx
SharePoint Framework řešení mohou taky profitovat z CDN. Dokážou využít public CDN. Jen je potřeba v konfiguraci package-solution.json nastavit atribut includeClientSideAssets:
{
„$schema“: „https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json“,
„solution“: {
„name“: „helloword-webpart-client-side-solution“,
„id“: „3c1af394-bbf0-473c-bb7d-0798f0587cb7“,
„version“: „1.0.0.0“,
„includeClientSideAssets“: true,
„isDomainIsolated“: false
},
„paths“: {
„zippedPackage“: „solution/helloword-webpart.sppkg“
}
}
A v souboru write-manifests.json nastavit atribut cdnBasePath:
{
„$schema“: „https://developer.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json“,
„cdnBasePath“: „<!– PATH TO CDN –>“
}
Závěr
Dnešní doba přímo vybízí ke stránkám se spoustou statického obsahu (obrázky, CSS, JS). A proto zapnutí a používání Office 365 CDN doporučuji. Nestojí to nic navíc a u publikačních stránek je to prakticky bez práce. Jen je potřeba dát pozor, co publikujete do public CDN, aby vám neuteklo něco, co si zaslouží ochranu. Občas se i v JS souborech objevují klíče do nejrůznějších služeb, jako třeba Webtrends a podobně.
Dalším úskalím může být nastavení proxy serverů a politik, které budou omezovat přístup na URL public nebo private CDN serverů.
Co se týče zrychlení, tam je výsledek hodně závislý na konkrétní situaci, ale nikdy jsem nepozoroval zpomalení. Celkově totiž potenciální zrychlení vychází z několika směrů:
- CDN servery netahají soubory z obsahových databází SPO (uleví tak SPO k poskytování užitečného obsahu).
- CDN servery používají protokol HTTP/2 (ale SPO servery mnohdy taky).
- Prohlížeče omezují typicky max. 6 souběžných spojení (stahování) na doménu, takže rozložením obsahu na 2 další domény (public a private CDN) může vést ke zrychlení i z tohoto důvodu. Teoreticky může prohlížeč v jednom okamžiku stahovat až 18 souborů současně.
Zrychlení stažení jednotlivých souborů bylo poměrně zajímavé, ale je potřeba si uvědomit, že většinu statického obsahu stejně stáhne prohlížeč jen jednou a pak soubory načítá z lokální cache počítače. Na druhou stranu, pro scénáře, kdy potřebujete mít stránku načtenou ASAP (typicky homepage), může být použití Office 365 CDN rozdíl mezi úspěchem a neúspěchem. A tedy k nezaplacení.
0 comments on Office 365 CDN