Jak Google urychluje web?

Lepší správa paměti pro JavaScript a spekulativní načítání HTML podle značek v kódu HTML mohou urychlit načítání webových stránek.

Svět internetových služeb je jeden z nejkompitetivnějších a Google průběžně hledá způsoby, jak urychlit dopravování obsahu ke stovkám milionů jeho uživatelů. Na konferenci O’Reilly Velocity, která se uskutečnila minulý týden v New Yorku, dva návrháři Googlu prezentovali několik tipů a výsledků výzkumů na urychlení přenosu a zobrazování webových stránek a aplikací. Podobné know – how se může hodit každému webovému vývojáři, všem, kteří aspirují na co nejrychlejší reakce svého produktu.

Jeden z nejbolestivějších problémů internetu je slabý výkon javascriptových aplikací. Ty mívají problémy především v mobilních klientech. Podle Colta McAnlisa, specialistu Googlu na problematiku rychlosti webových serverů, je slabinou především garbage collection, rutiny pro uvolňování nevyužité paměti, které se typicky spouštějí v tom nejméně vhodném okamžiku.

Oproti běžným tipům, je až 6 – násobně větší systémová paměť, než je potřebná pro aplikaci, nebo používání technik “ closures „, které se snaží zvětšit dostupnost místně definovaných proměnných, McAnlis doporučuje povšimnout si přístup knihovny Emscripten, která se používá na náročnější hry psané v HTML5.

Emscripten konvertuje kód vytvořený v C nebo C + + do JavaScriptu a správu paměti tak ponechává vlastní aplikaci. Dá se říci, že programy napsané touto technikou bývají 2 až 4 × rychlejší než typické javascriptové programy a netrpí žádným přerušovaným během, který správa paměti JavaScriptu často vyvolává.

Druhým přednášejícím firmy Google byl Steve Soulders, další specialista na rychlost webových serverů. Ve své prezentaci se věnoval některým novým metodám, které v prohlížečích načítají stránky ještě dřív, než o ně uživatel sám požádá.

Ve všech případech musí být prohlížeč schopen alespoň s určitou pravděpodobností odhadnout, na kterou stranu bude uživatel pokračovat. Pomoci mu mohou například štítky umístěny v kódu HTML stránky, protože autor stránek může sám nejlépe posoudit typické chování návštěvníka jeho produktu. V některých případech je to chování velmi deterministické, například v případě logovacích či vyhledávacích stránek.

Štítky pro – fetch doporučí prohlížeči, aby už stáhl stránku celou, pro – render vede ke konstrukci celé stránky, jako by byla zobrazována například na skryté záložce.

Další technika, která může značně zkrátit čas do naběhnutí celé stránk , je DNS pre- resolve, když prohlížeč předpokládá doménové jméno další stránky, například na základě prvních písmen, které uživatel napsal do adresního řádku, nebo za základě historie daného prohlížeče.

TCP pro – connect pak na základě podobných podkladů otevírá porty a inicializuje protokoly pro případ, že by k jejich použití v následujících sekundách mělo dojít.

Množství podobných technik však může vést k přetěžování vlastní konektivity a nakonec ji zatím podporují pouze některé verze prohlížečů. Ale jejich souhrnný dopad může být markantní a nabíhání stránek může být zkrácena o celé sekundy.

zdroj: Com­pu­terWorld