Šuplík Honzy Hučína

Skok na navigaci (menu)

Tento blog je v současné době uzavřen.
Pokračování blogu na bloguje.cz jsem zrušil. Pokud budu někdy pokračovat, bude to spíš tady.

Jednotlivý článek

Internet a vše kolem
2. 12. 2004

Podivné plynutí času při načítání

Při načítání webové stránky se čas asi zpomalí a těsně před událostí onLoad naopak šíleně zrychlí. Jinak nevím, jak si vysvětlit, proč mezi dvěma událostmi, které dělí načtení přibližně 60 KB kódu, uplyne podle Javascriptu kratší čas než mezi událostmi, mezi nimiž se už skoro nic nenačítá.

Tohle záhadné chování zkazilo Yuhůovi dobře vymyšlené měření. Podstatou měření bylo, že na začátek a konec těla stránky se dala dvě místa, kdy se pomocí Javascriptu zaznamenal aktuální čas na počítači uživatele. Mezi měřicími místy bylo několik desítek KB. Logická úvaha říkala: jak uživatel stránku načítá, tato se postupně zpracovává a vykresluje; tudíž volání Javascriptu v měřicích místech odpovídá skutečnému času, kdy řádek s tímto voláním dorazil po síti do počítače uživatele a byl zpracován. Rozdíl časů v obou měřicích místech by pak měl odpovídat době, za kterou se přenesl kód mezi nimi.

Ukázalo se ovšem, že tohle z nějakého důvodu nefunguje. Časové rozdíly, které Yuhů zjistil z logu Českého hostingu a do nichž mě nechal nahlédnout, byly neuvěřitelně malé (asi 10 % z nich bylo menších než 20 ms, což by v přepočtu znamenalo rychlosti přes 2 MB/s).

Pokoušel jsem se to vysvětlit kešováním stránky a kompresí (že by se stránka prostě nejdřív přenesla zkomprimovaná a zpracovala naráz, což by vysvětlovalo tak malé rozdíly času). A pro kontrolu jsem začal měřit také, vypnul kešování a přidal ještě jeden měřicí bod na událost onLoad. Počet měření zatím není nijak velký, ale jedno je jasné: časové rozdíly mezi začátkem a koncem těla stránky jsou v naprosté většině případů mnohem menší než rozdíly mezi koncem stránky a událostí onLoad. Podotýkám, že v měřicí stránce nemám žádné obrázky ani počitadlo.

Tomu nerozumím. Co trvá tak dlouho mezi zpracováním posledních řádků a událostí onLoad? A jak to, že mezi krajními body zpracování 60 KB je tak malý čas? Napadá mě snad jen to, že se možná stránka někde předzpracovává a javascripty volají ještě dřív, než dorazí ke klientovi. Ale to je skoro sci-fi.

Aktualizace: Z článku Dave Hyatta (via komentář Milana Kryla, David Majda) vyplývá, že prohlížeče nevykreslují stránku přesně průběžně, jak dorážejí data. Nejdřív si kus stránky nakřečkují a až ve chvíli, kdy si na to troufnou, začnou vytvářet renderovací strom (rendering tree). To by teoreticky mohlo vysvětlovat, proč je mezi zpracováním začátku a konce stránky tak malý časový rozdíl.

Komentáře (počet: 15, poslední 12. 12. 2004, 11:11, nelze přidat komentář)
RSS komentářů tohoto článku
Trvalý odkaz

Poslední články:

Další články si můžete vyhledat v jednotlivých přihrádkách, případně podle data.

© Honza Hučín 2004–6

Šuplík běží na PIPNI.CZ. Díky!

sber.cermat.cz

RSS Šuplíku

RSS komentářů – souhrnně

U každého článku je samostatný RSS kanál pro komentáře.

Výběr článků

Posledních 10 článků

nebo podle data:

nebo hledání fulltextem:

Archiv všech článků

Poslední komentáře

Zabili mě, parchanti [2]

8. 8. 16:48 | Pepa

Cestou kolem blogu [2]

7. 8. 21:26 | Honza Hučín

Cestou kolem blogu [1]

7. 8. 21:02 | Honza

Vrtulník nad hlavou [3]

6. 8. 14:29 | Pepa

Taková hra na volby [1]

3. 8. 18:29 | Honza

Nejčtenější

Žádné údaje nejsou k dispozici.

O mně

*1967, absolvent MFF UK v Praze (1991)

statistik, analytik, programátor, učitel, hudebník

nyní Ústav pro informace ve vzdělávání

Životopis (RTF)

Napište mi