Vyšlo v týdeníku CHIPweek č. 48/96, 26. listopadu 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a648k130.php3

Client Pull a Server Push

V báječném světě služby World Wide Web dnes existuje celá řada technik, umožňujících další zvyšování uživatelské atraktivnosti a „funkčnosti" WWW stránek. Některým z nich se dostává značné publicity (jako třeba jazyku Java), některým publicity poněkud skromnější (jako třeba animovaným obrázkům GIF), a ještě jiné pak jsou v odborných pramenech zmiňovány jen velmi zřídka. Sem patří i dvě vzájemně komplementární techniky, označované jako „Server Push" a „Client Pull".

Obě tyto techniky sledují v podstatě stejný cíl - vynutit si obnovu dat, které WWW klient (prohlížeč) někdy předtím získal od WWW serveru. Tedy vyvolat akci analogickou tomu, co se u většiny WWW prohlížečů označuje jako „Reload", a co spočívá v opětovném „natažení" právě zobrazované stránky. Ovšem s tím rozdílem, že nyní se jedná o akci vyvolanou automaticky (ať již jednorázově či opakovaně), a nikoli na bezprostřední popud uživatele. K čemu ale může být něco takového dobré?

Možností je hned několik. Například když půjde o zobrazování takových údajů, které se neustále mění (například momentální kurzy akcií na burze, agenturní zpravodajství, průběžné výsledky voleb apod.), je vhodné zařídit věci tak, aby se uživateli příslušná stránka sama obnovovala (znovu načítala) s určitou pravidelností (například každých pět minut), a to nejlépe sama, bez přímého zásahu člověka - uživatele. Jiným možným využitím je jednoduchá animace, kdy budou opakovaným „načítáním" s vyšší frekvencí opakování dopravovány k uživateli jednotlivé snímky určité animované sekvence (nebo třeba různé reklamy, které se pak budou střídavě zobrazovat v rámci jedné a téže WWW stránky).

Obě techniky, označované jako „Server Push" a „Client Pull", tedy sledují stejný cíl, ale jejich přístup k dosažení tohoto cíle je značně odlišný. Jak už jejich samotný název naznačuje, technika „Server Push" předpokládá aktivní roli WWW serveru, který svým klientům (WWW browserům) sám „vnucuje" resp. „protlačuje k nim" nová data (tak by asi zněl nejvýstižnější překlad pojmu „push" v této souvislosti). Naopak technika „Client Pull" předpokládá aktivitu na straně klienta, který si bude sám z vlastní iniciativy „stahovat" (pull) nové verze již jednou načtených stránek. Další odlišnosti pak jsou i v konkrétní realizaci obou technik.

Technika „Client Pull" využívá jedné málo známé vlastnosti protokolu HTTP a jazyka HTML, umožňující vložit do právě stahované WWW stránky příkaz typu „za dobu XY sám načti stránku na adrese ZW". Tento příkaz je samozřejmě určen WWW prohlížeči, a nikoli uživateli. Příslušný příkaz přitom požaduje pouze jednorázové načtení, a nikoli načítání opakované - takže pokud je žádoucí vyvolat opakování, musí být při novém načtení pokaždé načtena taková stránka, která příslušný příkaz obsahuje znovu. Zajímavé je i to, že zmíněný příkaz (přenášený v hlavičce HTML stránky) umožňuje explicitně zadat adresu stránky, která má být automaticky načtena - takže to nemusí nutně být ta samá stránka, ve které je příkaz obsažen. Toho pak lze s výhodou využívat při různých přesunech WWW stránek z jednoho serveru někam jinam - na původní místo pak lze vložit „odskokovou" stránku, která prostřednictvím techniky „Client Pull" vyvolá automatické načtení požadované WWW stránky z jejího nového sídla.

Technika „Server Push" se k celé problematice opakování přenosů staví zcela jinak. Pomocí zajímavého triku dosahuje toho, že klient (prohlížeč) po načtení celé stránky neukončuje spojení navázané se serverem, ale pasivně čeká, až mu server pošle novou verzi dat. Trik přitom spočívá v tom, že server oznámí klientovi, že právě stahovaná stránka má povahu dokumentu složeného z více částí, přičemž jedna část nahrazuje („překrývá") druhou. Klient (prohlížeč) si pak po načtení první verze stránky myslí, že jde jen o první část celého vícesložkového dokumentu, a čeká na další části (a přitom neruší spojení). Když server sám uzná za vhodné, pošle mu další část, kterou je další verze téže stránky. Klient (prohlížeč) touto částí dokumentu překryje (nahradí) předchozí část, tj. zobrazí novou verzi příslušné WWW stránky, a čeká dál. Vše se opakuje tak dlouho, dokud server neuzná za vhodné celou záležitost ukončit.