Google poodhalil své akcelerační technologie

21. 10. 2013

Sdílet

 Autor: © Victoria - Fotolia.com
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 nejkompetitivnějších a Google průběžně hledá způsoby, jak urychlit dopravování obsahu k jeho stovkám milionů uživatelů. Na konferenci O'Reilly Velocity, která proběhla tento týden v New Yorku, dva návrháři Googlu prezentovali několik tipů a výsledků výzkumů pro 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, kdo aspirují na co nejpromptnější reakce svého produktu.

Jedním 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 McAnlise, specialisty Googlu na problematiku rychlosti webových serverů, je slabinou především „garbage collection“, rutiny pro uvolňování nepoužité paměti, které se typicky spouštějí v ten nejméně vhodný okamžik.

Proti běžným tipům, jako je až 6ná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 lokálně definovaných proměnných, McAnlis doporučuje povšimnout si přístupu knihovny Emscripten, která se používá pro 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ž 4krát 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ě předtím, 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 stránku bude uživatel pokračovat. Pomoci mu mohou například štítky umístěné 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 „pre-fetch“ doporučí prohlížeči, aby již stáhl stránku celou, „pre-render“ vede ke konstrukci celé stránky, jako by byla zobrazována například na skryté záložce.

Další technikou, která může značně zkrátit čas do naběhnutí celé stránky, 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í řádky, nebo za základě historie daného prohlížeče.

TCP pre-connect potom 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 vteřinách mělo dojít.

Řada podobných technik ale může vést k přetěžování vlastní konektivity a ostatně je prozatím podporována jen některými verzemi prohlížečů. Ale jejich souhrnný dopad může být markantní a nabíhání stránek se může zkrátit o celé sekundy.