Komprimace a šifrování HTML kódu

20. září 2001

Pravidelní čtenáři mají zajisté v paměti zajímavý a poučný článek kolegy Lahvičky na téma jak optimalizovat HTML kód, aby se rychleji načítal uživatelům. Dnes na něj volně navážeme a zaměříme se na nástroje, jež slouží k další úpravě kódu – kompresi a šifrování.

Čtenářům, kterým předchozí článek unikl, doporučujeme jeho nastudování.

Komprimace HTML kódu

Každý zkušenější programátor ví, že optimalizace kódu je jedním z klíčů, jak vytvořit kvalitní program. A v internetovém prostředí toto tvrzení platí dvojnásob. Důvodem je nutný přenos kódu celé aplikace, která musí urazit leckdy spletitý kus cesty, než se dostane ke koncovému uživateli. Polemika ohledně „zeštíhlování“ kódu by byla bezpředmětná, pokud by tyto cesty byly široké jako několikaproudové dálnice, takové jak je známe z amerických filmů, a technologie internetového připojení byla o pár let dále než je dnes. Leč realita je poněkud jiná.

Zatímco úprava kódu, kterou provádíme na úrovni programování, slouží především k jeho zpřehlednění a zrychlení běhu celé aplikace v prohlížeči, odstranění redundatních dat urychluje celkový přenos kódu. V současné době je počet uživatelů připojených modemem stále velký, a proto je třeba dbát na to, aby velikost a použitelnost www aplikací byla snesitelná i na pomalejším připojení. Přenosová rychlost se u inkriminované skupiny pohybuje okolo 2-6KB za sekundu, a jakkoliv obsahově vynikající web, jehož velikost se pohybuje v řádu stovek KB, může uživatele od jeho příští návštěvy spolehlivě odradit. Dalším důvodem, proč přistoupit k redukci kódu, jsou finance. Jak všichni víme, veškerý datový běh stojí provozovatele serveru, ale taky koncové uživatele peníze. Některé kompresní programy jsou schopny dosáhnout kompresního poměru až 50%, což může výrazně ovlivnit celkový přenos dat a náklady s tím spojené.

Ačkoliv zmiňovaná čísla vypadají velmi přesvědčivě, vše má i své stinné stránky. Tou je především kvalita komprimačního softwaru, který ne vždy dokáže zachovat původní design a funkčnost stránky (napříč všemi browsery). Hlavním nepřítelem jim často bývá složitěji nebo nekorektně napsaný Javascriptový kód, který špatně interpretují a často tak dochází ke krachu celé aplikace. Dalším oříškem může být skriptování na straně serveru, se kterým se programy vypořádávají o dost hůře, neboť komprese je určena hlavně pro statické stránky. Přesto však některé z nich podporují jak ASP tak i PHP skripty.

A jakým způsobem programy účinně zmenšují velikost souboru? Řešení je dvojí. První metoda stojí na odstranění nepotřebných znaků – mezer, zalamování řádků, závorek apod. Individuálně (dle softwaru) pak lze zvolit nahrazení nebo odstranění nepotřebných či vícenásobně použitých tagů, jednotlivých atributů, poznámek apod. Obecně se jedná odstranění dat, jež nemají vliv na výsledné zobrazení stránky. Druhou možností je použití opravdového kompresního algoritmu (často ve spojení s prvním způsobem), tak jak jej známe například z komprimačních programů. Oba dva způsoby mají své klady a zápory. Zatímco u prvního je redukce dat nižší, data však zůstávají v původním tvaru a prohlížeč je může rovnou číst. U druhé alternativy je redukce výrazně vyšší, avšak čas, který musí prohlížeč věnovat k dekompresi, bývá natolik velký, že se nevyplatí data takto komprimovat (z hlediska času). Spíše se jedná o určitý způsob šifrování, kterému se budeme podrobněji věnovat později.

Softwaru, vytvořeném ke kompresi HTML kódu, (popřípadě dekompresi) lze na síti najít docela velké množství. Avšak jak jsem již naznačil, je třeba si vybrat ty spolehlivější. Nelze hledět ani tak na kompresní poměry ve kterých se jednotlivé programy liší v řádu kilobitů, ale především na funkčnost. Z mnoha programů bych doporučil alespoň jeden – HTML (un)Commpress od Jana Jacobse, jež vyniká schopností poradit si i se složitějším HTML kódem včetně ASP a PHP. Mimo jiné umožňuje specifikovat ke každému tagu způsob komprese a mnoho dalších nastavení. Dokáže také komprimovat více zvolených stránek či celé adresáře najednou. Zajímavou funkcí je tzv. dekomprese, což je proces úpravy kódu do „standardní“ podoby (a to nejen ze zkomprimovaného tvaru), což využijí především ti tvůrci, kteří píší nepřehledně a rádi by své výtvory upravili do čitelnější podoby.

Jak dokáže program typu HTML (un)Compress pracovat můžete shlédnout ve výsledkové tabulce malého ilustračního testu pěti typově odlišných stránek (co se týče velikosti a obsahu). Je třeba podotknout, že test byl prováděn na již vygenerovaném obsahu, takže výsledky u dotyčných stránek (Interval, Flashnews) nemusí být zcela určující. Přesto uvedená čísla jistě stojí za zvážení.

Stránka Před kompresí Po kompresi
Interval.cz 78Kb 68Kb
DHTML 8Kb

5Kb
Flash News 78Kb 60Kb
Živě (text) 13Kb 12Kb

Šifrování HTML kódu

Šifrování kódu je alternativou pro ty webmastery, kteří se bojí o své pracně vymyšlené výtvory a chtěli by zabránit nenechavcům v kopírování jejich kódu. Textová podstata HTML souboru umožňuje doslova každému zobrazit zdrojový kód každé stránky, a přestože existují různá pomocná Javascriptová řešení typu right-click, zkušenějšího uživatele od jeho úmyslu stejně neodradí. V poslední době se vůbec často objevují různé „kopie“ nejrozšířenějších webů (interval.cz, Lupa). Jak těmto „autorům“ v této činnosti zabránit si teď povíme.

Popravdě, možností jak šifrovat kód není mnoho. Všechny metody vychází z myšlenky převést celý zdroj do textové proměnné a pomocí JS funkce write ji vypsat na obrazovku. Jediné, v čem se způsoby liší je algoritmus, kterým je text v proměnné uložen (šifrován). Někdy je text zapsán jako posloupnost klasických a escape znaků, a pomocí funkce unescape je řetězec dešifrován (viz příklad). Odolnost je však velmi malá, neboť systém je lehce čitelný a znaky lze velice jednoduše dešifrovat opačnou funkcí escape.

//
text = „%3Ctable%3E%20Interval%20%3C/table%3E“;
alert(unescape(text));
//

Většinou však programy používají vlastní algoritmy, často s vysokým komprimačním efektem. Jejich schopnost odolat je mnohem větší, ne-li 100%. Jak jsem se již zmílil proces dešifrování trvá delší dobu, proto je třeba se rozhodnout zda-li je obsah natolik důležitý aby uživatelé trpěli až 10 vteřinovou prodlevu.

Programů k šifrovaní je více, každý s vlastním algoritmem a širokou škálou volitelných funkcí (komprimace pouze skriptů, nastavení přístupového hesla, zabránění v označování textu, kliknutí pravým tlačítkem apod.), takže je třeba individuálně vyzkoušet který bude vám a vašim stránkám vyhovovat.

Odkazy na další související software naleznete např. na těchto stránkach www.davecentral.com, www.programfiles.com nebo na www.yippee.net.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *