Hostujte část webu zdarma u Google

Velké množství webů používá nějaký javascriptový framework. Ať už to jsou malé knihovny typu jQuery nebo Prototype, či velké a komplexní jako YUI nebo ExtJS, jejich přenos na klientský počítač nějaký čas a šířku pásma zabere. Existuje tu však možnost využít infrastruktury webových gigantů, jako je Google.

Nápad nechat hostovat některé standardní části vlastního webu u cizího providera s velmi slušnou infrastrukturou není nijak nový ani nepochopitelný. Každý, kdo někdy zažil, byť i v malém, takzvaný Digg efekt, tedy náhlý nápor návštěvníků stránek, ví, že v takových chvílích se každý načítaný skript, každá ikonka, každý soubor se stylem počítá, a podobný nápor zájemců se velmi rychle změní z radostné události na cosi srovnatelné s DDoS útokem.

Je tedy jen logické vyčlenit některé „statické“ elementy na webové stránce (typicky obrázky, skripty, soubory se styly apod.) na jiný stroj, na kterém nemusí běžet např. žádný skriptovací jazyk, stačí jen lehký HTTP server. S rozšířením cloudových služeb a s tím, jak jsou stále dostupnější služby CDN, se objevila i možnost umístit tyto prvky na nějaký „cloudhosting“ – například Amazon S3 (např. Twitter takto ukládá profilové fotky, z českých serverů využívá ukládání na S3 třeba server Bloguje, který z CDN Amazonu linkuje stylopisy pro blogy).

Kromě elementů, které jsou „unikátní“ pro váš web (obrázky, stylopisy), lze použít tuto techniku i pro skripty (jen je potřeba dávat pozor na Same Origin Policy).  Obzvlášť lákavá je tato myšlenka v případě nějakých standardních skriptů – tedy zejména javascriptových frameworků a knihoven.

Yahoo

Yahoo se před několika lety rozhodlo poskytnout svůj webový framework YUI (Yahoo User Interface) jako opensource. YUI se skládá z dvou hlavních částí: z JavaScriptové knihovny, která řeší některé aktivní prvky pro webové aplikace (widgety apod.), a z CSS frameworku, který se stará o „CSS reset“ a nastavuje pravidla např. pro grid či stylování formulářů.

Zajímavé na YUI je to, že si jej od verze 2.2, která vyšla v únoru 2007, nemusíte instalovat na vlastní server a vaši návštěvníci tedy nepřenášejí spoustu „zbytečných“ dat přes vaši linku. Lze totiž do dokumentu nalinkovat tyto knihovny přímo ze serverů Yahoo, a využít tak zdarma jejich CDN.

Google

Už delší dobu se objevovaly pokusy využít obří infrastrukturu Googlu k něčemu podobnému. Byla používána např. služba Google Code nebo Google Pages. Google nakonec sám nabídl službu „hostování standardních javascriptových knihoven“ v rámci své služby AJAX Libraries API. V současné době můžete ze serverů Googlu přímo linkovat jQuery, jQuery UI, Prototype, Script.aculo.us, MooTools, Dojo, SWFObject, YUI, Ext Core a Chrome Frame.

Proč to dělat?

Takové řešení má své výhody. Výrazně sníží latenci, využívá paralelismus a zlepšuje cachování.

Snížení latence je důsledek toho, že Google (nebo Yahoo) využívají distribučních sítí (CDN), které mají své koncové body (uzly) po celém světě. Pokud bude vaše aplikace hostována v ČR a většina uživatelů bude přistupovat z ČR, pravděpodobně zrychlení nepocítí (možná naopak), ale ve chvíli, kdy začnou přistupovat uživatelé z celého světa, tak se stane geografická vzdálenost od vašeho (jediného) serveru úzkým hrdlem. CDN je tak velmi pohodlnou možností, jak dostat obsah blíž vašim uživatelům (nebo alespoň část).

S tím souvisí i paralelní načítání. Většina prohlížečů má omezen počet spojení pro každý server (je to jednoduchá obrana proti zaplavení serveru požadavky). Pokud je na stránce např. 40 objektů z jednoho serveru, nestahuje je všechny najednou, ale postupně (např.) ve čtyřech frontách. Pokud je na stránce nalinkovaný objekt z jiného serveru (třeba různé měřicí kódy), otevře si pro ně prohlížeč extra spojení a stahuje je zároveň. Pokud tedy nalinkujete JavaScriptové knihovny z Google, nebudou čekat ve frontě na váš server.

Zlepšení cachování souvisí s tím, jak prohlížeče ukládají soubory do cache: Pro každý zdrojový server zvlášť. Pokud tedy přijdete na pět serverů, které používají jQuery 1.4.2, budete mít v cache pětkrát identický soubor jquery-1.4.2.min.js a bude se pětkrát stahovat. Z hlediska cachovacího mechanismu v prohlížeči jde pokaždé o jiný soubor. Pokud by tyto servery používaly např. hostování u Google, stáhl by se jQuery jen při návštěvě prvního serveru, v ostatních případech by prohlížeč poznal, že se jedná o soubor, který v cache už je.

Nevýhody

Výhody jsou zřejmé: Větší rychlost a menší zátěž našeho serveru. Na druhé straně má takové řešení i nevýhody, které mohou být pro někoho banální, pro jiného nepřekonatelné – záleží na přístupu a aplikaci.

Nejzjevnější nevýhodou je závislost na cizím serveru. Tedy na tom, že bude dostupný vždy, když bude dostupný váš server. Což zrovna u velkých CDN bývá splněno. Další nevýhodou je, že jednoho krásného dne se může váš vybraný poskytovatel rozhodnout, a soubor přestane poskytovat.

Ano, to všechno se stát může. Taky se jednoho dne může stát, že Google vypne Mapy, a dvě třetiny mashupů přestanou fungovat… Otázkou je, jestli je toto riziko přijatelné. Pro někoho v žádném případě, pro někoho je banální a výše zmíněné výhody převažují.

Problémem, který není na první pohled zjevný, a o němž lidé, kteří neznají pravidla bezpečnosti, často ani netuší, je, že vložený JavaScript z cizího serveru má možnost dostat se k některým citlivým informacím nebo provádět jiné nekalosti (je to v podstatě „legální“ XSS). Jakýkoli skript, který vložíte do stránky, a nad nímž nemáte kontrolu, je bez diskusí bezpečnostní riziko. A platí to nejen pro výše zmíněné hostování knihoven, ale pro všechny možná počítadla, analytické kódy či widgety, které běží na serveru třetí strany. Otázka je, jestli je toto riziko akceptovatelné. Ale na ni si každý musí odpovědět sám. U firemního webu či webu velké organizace je něco podobného pravděpodobně nepřijatelné, u malého nadšeneckého webu na sdíleném hostingu by vadit nemuselo; naopak by se mohla projevit velmi výrazně výše zmíněná pozitiva.

Pro větší weby stojí za úvahu využít (samo sebou placené) alternativy komerční CDN a jejím prostřednictvím šířit statický obsah webu (obrázky, styly, knihovny, …)

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Komentáře: 20

Přehled komentářů

Ondřej Machulda Další nevýhoda
Vojtěch Vondra Re: Další nevýhoda
pas2007 cachování knihoven
Jirka Re: cachování knihoven
pas2007 Re: cachování knihoven
Jirka Re: cachování knihoven
Jirka Re: cachování knihoven
pas2007 Re: cachování knihoven
Jirka Re: cachování knihoven
pas2007 Re: cachování knihoven
Jirka Re: cachování knihoven
pas2007 Re: cachování knihoven
Robert Re: cachování knihoven
pas2007 Re: cachování knihoven
Pexxi.sk Re: cachování knihoven
pas2007 Re: cachování knihoven
Borek Bernard Re: cachování knihoven
František Kučera Re: cachování knihoven
pas2007 Re: cachování knihoven
lukas Diky za uzitecny clanek, pane Maly.
Zdroj: https://www.zdrojak.cz/?p=3166