Prenos dat medzi browserom v nasom pocitaci a serverom prebieha asi takto:
Browser chce vidiet stranku http://www.mojastranka.sk/index.html a tak posiela tuto poziadavku na server (datova velkost tejto poziadavky je 1Kb)
Server hlada pozadovany subor a nachadza ho
Server nasiel subor, odpoveda (kod odozvy 200 OK) a posiela subor nazad (velkost suboru je 100 Kb)
Browser caka a caka a caka ,az nakoniec natiahne a zobrazi stranku
Kde je teda Problem? Ved to funguje. Ano velkost suboru je vsak 100Kb a aj doba pokial sa zobrazi je dlha. Najjednoduchsi sposob co s tym sparavit je ten subor ktory nam server posiela nazad zozipovat. Teda poslat zo serveru subor index.html asi nejako takto index.html.zip. Browser ho moze stiahnut a rozbalit a usetri sa tak cas stahovania a zobrazi sa stranka podstatne rychlejsie. V tomto pripade by prenos resp. komunikacia serveru a browsera prebiehala asi takto.:
Browser chce vidiet strankuhttp://www.mojastranka.sk/index.html a tak posiela tuto poziadavku naserver (pouzijeme Accept-encoding:gzip, co znamena ze sa pytame serveru ci akceptuje gzip kodovanie)
Server hlada pozadovany subor a nachadza ho
Server nasiel subor, odpoveda (kod odozvy 200 OK) a posiela subor nazad (server vyhovie poziadavke na gzip kodovanie a za pomoci Content-encoding:gzip subor ma 10Kb)
Browser rozbali skompresovany subor a zobrazi stranku ( nakolko subor mal len 10 Kb, rychlost je podstatne vyssia)
Pokial server vsak Gzip kodovanie nepodporuje, poziadavku nam posiela starym sposobom , cize 100Kb. Apache server dnes defaultne podporuje 2 druhy komprimacie. Jednym je GZIP a druhym je MOD DEFLATE. Ohladne moznosti pouzitia mozete sa dozvediet viac tu.
Pokial mame pristup k suboru .htaccess mozeme pouzit toto v pripade ze chceme MOD DEFLATE :
#komprimuj vsetok text a html
AddOutputFilterByType DEFLATE text/html text/plain text/xml
#alebo komprimuj subory podla danej koncovky
<Files *.xml>
SetOutputFilter DEFLATE
</Files>
Velmi jednoduchy je sposob pouzitia komprimacie za pomoci GZip. Pokial vas subor je html zmente jeho koncovku na php. Dany kod je mozne vlozit len na jeden subor, ak vasa aplikacia je dynamickeho charakteru (CMS). Takze vkladajte ho na samy zaciatok (pred vsetky ostatne kody) suboru ktory je cislo 1 vasej aplikacie. Obvykle to byva subor config.php, header.php alebo podobne. No a tu je samotny kod:
//<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
Nezabudnite si ho odkomentovat, cize zmazat //
Pokial si chcete skontrolovat ci vasa stranka je skomprimovana, mozete pouzit niektoru z online sluzieb ako je napriklad tato.