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.
Vyplývá to z výzkumu, který jsem prováděl na začátku září. S měřením mi účinně pomohl Yuhů, data poskytl Český hosting. Děkuji!
Od 27. srpna do 7. září byl na stránkách Jak psát web umístěn kód, který javaskriptem zjistil lokální čas a časové pásmo v počítači uživatele, poslal to na server (v rámci speciálního HTTP požadavku), kde se vše zaznamenalo spolu s aktuálním serverovým časem. U každého přístupu se tak mohl porovnat stav hodin na počítači uživatele s přesným časem (serverové hodiny šly přesně). Prováděl jsem určitou kontrolu, zda prodleva mezi zpracováním HTTP požadavků není příliš velká. Po očištění dat bylo k dispozici 21 052 záznamů z 5220 unikátních IP adres, tedy dost velký vzorek.
Protože serverový čas byl uveden s přesností na sekundy, zaokrouhlil jsem i klientský čas z javaskriptu na celé sekundy dolů.
Mohl jsem analyzovat jednotlivé přístupy bez ohledu na to, že jich mohlo pocházet víc od jednoho uživatele, anebo pouze jednotlivé IP adresy. S IP adresami je ale potíž:
Data to potvrdila. U 15 % IP adres se během experimentu změnila přesnost hodin o více než 10 sekund, což mohlo těžko nastat tím, že by si takové množství uživatelů měnilo čas. Proto jsem bral v úvahu jenom jednotlivé přístupy. Ověřil jsem si, že výsledky, které uvádím dále, jsou velmi podobné pro přístupy i pro IP adresy.
U 4,5 % přístupů byl časový rozdíl mezi klientem a serverem větší než 45 minut. 188 přístupů (necelé jedno procento) mělo dokonce rozdíl větší než jeden rok. Jelikož ale byly časové rozdíly v takových případech blízké celému počtu hodin, dní, měsíců nebo roků, vyvozuji z toho, že hodiny uživatele byly chybně nařízeny – nastaveno špatné datum, případně špatná hodina nebo špatné časové pásmo.
U zbývajících přístupů byly odchylky hodin uživatele od skutečnosti mnohem menší. Například plných 90 % přístupů mělo odchylku do 5 minut. Podrobně si můžete rozložení odchylek prohlédnout na grafech:
Pozoruhodné je zjištění, že odchylku do 10 sekund (kladnou nebo zápornou) má přibližně polovina přístupů. A u 12 % přístupů (tedy zhruba každý osmý) jdou hodiny uživatele zcela správně, odchylka od serverového času je nulová.
Uvedené závěry ukazují, že se na hodiny v počítači uživatele dá do značné míry spolehnout. Pětiminutová odchylka u 90 % uživatelů je poměrně přijatelná tam, kde se má v určitý čas začít objevovat nějaká doplňková informace, upozornění, odkaz apod. Přesun hlídání času ze serverových skriptů na klientské může odlehčit provozu na serverech, stránka se pak může generovat v delších intervalech a víc kešovat.
V každém případě je ale nutné brát v úvahu, že
Aktualizace: Na přání některých komentujících doplňuji tabulku podle operačních systémů.
Podíly odchylek od správného času podle operačního systému (v %)
OS | 0 s | do 10 s | nad 45 min | # celkem |
---|---|---|---|---|
celkem | 11,8 | 50,1 | 4,4 | 21512 |
Windows XP | 12,5 | 64,9 | 4,2 | 12765 |
Windows NT/2000 | 16,8 | 37,8 | 2,5 | 4404 |
Windows 95/98/ME | 2,4 | 16,5 | 6,2 | 3812 |
Linux | 23,3 | 37,4 | 9,7 | 486 |
Mac | 25,0 | 56,3 | 25,0 | 32 |
ostatní | 23,1 | 0,0 | 0,0 | 13 |
Vložit vlastní komentář – Návrat k článku – RSS komentářů tohoto článku
[1] 13. 9. 2004, 16:41 – dgx (Odkaz)
Tak dobré výsledky jsou nejspíš proto, že Windows XP už automaticky synchronizují přes internet čas. Honzo, nemáš možnost zjistit vztah mezi časovou odchylkou a použitým OS?
[2] 13. 9. 2004, 18:08 – Jiří Macich ml. (Odkaz)
A nejen Windows XP. Ta mají integrovaný nástroj, ale stejně funkčních utilit jsou mraky ... Spíš by bylo zajímavější měřit datum a pozorovat, kolik lidí šulí nějaký nešikovně ochráněný shareware ;-)
[3] 13. 9. 2004, 19:07 – noname
jo já také občas měním čas kvůli jednomu shareware (spouštím ho tak málo často, že to neřeším systémově).
XP obsahují v sobě automaticky synchronizaci, u jiných je to třeba vesměs zapínat (ještě jeden Linux co jsem zkoušel měl tuším auto zapnutou NTP synchron). Takže by asi synchronizace versus OS smysl měli. V Linuxu zase nebývá problém s shareware.
Znám i maníka, co má prehistorický stroj neY2K compatible, tak to řeší tak, že tam má rok nějaký 9x
[4] 13. 9. 2004, 19:49 – Honza Hučín (Odkaz)
[1][3] Data se sbírala o platformě i o user-agentech, takže teoreticky by to asi šlo. Podívám se na to, neručím za to, že ještě dnes.
Rychle jsem se podíval, jak se chová Linux - nulovou odchylku má i na Linuxu cca 12 % přístupů, odchylku do 10 sekund má trochu méně než polovina, maximální odchylka byla jen pár hodin.
[5] 14. 9. 2004, 05:09 – llook (Odkaz)
Mám nějak rozbitou CMOSku, takže co start počítače, to snulování času na 30.11.1999 (nulový timestamp). Ted už to mám vyřešený skriptem, který se mě na datum a čas zeptá (nejsem nastálo připojený abych to mohl tahat ze sítě).
[6] 14. 9. 2004, 08:52 – Eso
Dotaz: Jak se scriptu jevil cas navstevniku, kteri byly opravdu v jinem casovem pasmu?
[7] 14. 9. 2004, 08:58 – Honza Hučín (Odkaz)
Aktualizace: doplnil jsem tabulku podle operačních systémů. WinXP mají opravdu nejvyšší podíl malých odchylek, i když přesnou nulu trefují častěji jiné OS. Jak se dalo čekat, nejhůř jsou na tom Win 9x/ME.
Opravuji včerejší informaci [4] - Linux trefuje přesnou nulu z více než 20 %, tedy ne 12 %.
[8] 14. 9. 2004, 09:05 – Honza Hučín (Odkaz)
Ad [6] Javaskript poskytuje dva údaje: lokální čas v milisekundách od 1. 1. 1970 (metoda getTime) a posun časového pásma, které má uživatel zadané v počítači, v minutách vůči GMT (metoda getTimezoneOffset). Samozřejmě Javaskriptem nelze zjistit, v jakém časovém pásmu uživatel fyzicky je.
Takže když si člověk v Praze nastaví časové pásmo Londýn, ale čas si nastaví pražský, vyhodnotí to skript jako hodinové zpoždění.
Pokud se k lokálnímu času přičte posun časového pásma, dostane se čas uživatele v GMT. A serverový čas běžel v GMT.
K tomuto článku není možné vkládat komentáře.
© Honza Hučín 2004–6
Šuplík běží na PIPNI.CZ. Díky!
8. 8. 16:48 | Pepa
7. 8. 21:26 | Honza Hučín
7. 8. 21:02 | Honza
6. 8. 14:29 | Pepa
3. 8. 18:29 | Honza
*1967, absolvent MFF UK v Praze (1991)
statistik, analytik, programátor, učitel, hudebník