Ako ušetriť prevádzku pomocou mod_deflate Apache2


Na tejto stránke

  1. 1 Povoľte mod_deflat
  2. 2 Nakonfigurujte mod_deflát

    1. 2.1 Explicitné zahrnutie súborov podľa typu MIME
    2. 2.2 Explicitné vylúčenie súborov podľa prípony
    3. 2.3 Smernice o ďalšej konfigurácii
    4. 3 Testovanie
  3. 4 Odkazy

V tomto návode popíšem, ako nainštalovať a nakonfigurovať mod_deflate na webovom serveri Apache2. mod_deflate umožňuje Apache2 komprimovať súbory a doručovať ich klientom (napr. prehliadačom), ktorí dokážu spracovať komprimovaný obsah, ako to robí väčšina moderných prehliadačov. Pomocou mod_deflate môžete komprimovať HTML, textové alebo XML súbory na cca. 20 – 30 % ich pôvodných veľkostí, čím sa vám ušetrí prevádzka servera a používatelia vášho modemu budú šťastnejší.

Kompresia súborov spôsobuje o niečo vyššiu záťaž na serveri, ale podľa mojich skúseností je to kompenzované tým, že časy pripojenia klientov k vášmu serveru sa značne skrátia. Napríklad používateľ modemu, ktorý potreboval sedem sekúnd na stiahnutie nekomprimovaného súboru HTML, môže teraz potrebovať iba dve sekundy na rovnaký, ale komprimovaný súbor.

Použitím mod_deflate sa nemusíte báť, že vylúčite používateľov so staršími prehliadačmi, ktoré nezvládajú komprimovaný obsah. Prehliadač vyjednáva so serverom pred prenosom akéhokoľvek súboru a ak prehliadač nedokáže spracovať komprimovaný obsah, server doručí súbory nekomprimované.

mod_deflate nahradil mod_gzip Apache 1.3 v Apache2. Ak chcete poskytovať komprimované súbory pomocou Apache 1.3, pozrite si tento návod: mod_gzip - poskytovanie komprimovaného obsahu webovým serverom Apache

Najprv chcem povedať, že toto nie je jediný spôsob, ako nastaviť takýto systém. Existuje mnoho spôsobov, ako dosiahnuť tento cieľ, ale ja to robím takto. Nedávam žiadnu záruku, že to bude fungovať pre vás!

1 Povoľte mod_deflat

Ak máte nainštalovaný Apache2, mod_deflate by už mal byť nainštalovaný aj vo vašom systéme. Teraz to musíme povoliť. V Debiane to môžeme urobiť takto:

a2enmod deflate

Potom reštartujte Apache2:

service apache2 restart

Na iných distribúciách možno budete musieť upraviť konfiguráciu Apache2 manuálne, aby ste povolili mod_deflate. Možno budete musieť pridať takýto riadok do sekcie LoadModule:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Uistite sa, že ste upravili cestu na mod_defrate.so a potom reštartujte Apache2.

2 Nakonfigurujte mod_deflát

Kompresiu súborov je možné nakonfigurovať jedným z dvoch spôsobov: buď explicitným vylúčením súborov podľa prípony alebo explicitným zahrnutím súborov podľa typu MIME. Mod_deflate môžete povoliť pre celý server Apache2 alebo len pre konkrétne virtuálne stránky. V závislosti od toho buď teraz otvorte sekciu globálnej konfigurácie servera Apache2 alebo len sekciu konfigurácie vhost, kde chcete povoliť mod_deflate.

2.1 Explicitné zahrnutie súborov podľa typu MIME

Ak chcete komprimovať iba súbory HTML, text a XML, pridajte do svojej konfigurácie tento riadok:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

Toto je konfigurácia, ktorú používam, pretože nechcem komprimovať obrázky alebo súbory PDF alebo už komprimované súbory, ako napríklad súbory zip.

2.2 Explicitné vylúčenie súborov podľa prípony

Ak chcete komprimovať všetky typy súborov a vylúčiť len niekoľko, pridajte do svojej konfigurácie niečo takéto (namiesto riadku z časti 2.1):

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \
    \.(?:exe|t?gz|zip|bz2|sit|rar)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

To by komprimovalo všetky súbory okrem obrázkov (gif, jpg a png), už komprimovaných súborov (ako zip a tar.gz) a súborov PDF, čo dáva zmysel, pretože komprimáciou týchto typov súborov veľa nezískate.

2.3 Smernice o ďalšej konfigurácii

Bez ohľadu na to, či používate konfiguráciu z časti 2.1 alebo 2.2, mali by ste do svojej konfigurácie pridať tieto riadky:

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

Tieto riadky sú pre niektoré staršie prehliadače, ktoré nepodporujú kompresiu iných súborov ako HTML dokumentov.

Konfigurácia je teraz dokončená a musíte reštartovať Apache2. V Debiane to urobíte takto:

service apache2 restart

Ak sa chcete dozvedieť o ďalších konfiguračných smerniciach, pozrite sa na modul Apache mod_deflate.

3 Testovanie

Aby sme otestovali našu kompresiu, pridali sme do našej konfigurácie mod_deflát niekoľko príkazov, ktoré zaznamenávajú kompresný pomer doručených súborov. Otvorte svoju konfiguráciu mod_deflate a pridajte nasledujúce riadky:

DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /var/log/apache2/deflate_log deflate

Uistite sa, že ste nahradili /var/log/apache2 adresárom denníka vášho Apache2. Môže to byť /var/log/httpd, /var/log/httpd2 atď.

Potom reštartujte Apache2. V Debiane to urobte takto:

service apache2 restart

Teraz vždy, keď je požadovaný súbor, tento sa prihlási do /var/log/apache2/deflate_log (alebo do akéhokoľvek súboru, na ktorý ste ho zmenili). Typický riadok denníka vyzerá takto:

"GET /info.php HTTP/1.1" 7621/45430 (16%)

Vidíte, že súbor info.php bol vyžiadaný a doručený. Jeho pôvodná veľkosť bola 45 430 bajtov a bola skomprimovaná na 7 621 bajtov alebo 16 % svojej pôvodnej veľkosti! To je skvelý výsledok a ak vaša webová stránka pozostáva väčšinou z HTML, textových a XML súborov, mod_deflate vám ušetrí veľa návštevnosti a pre používateľov s nízkou šírkou pásma sa vaša stránka načíta oveľa rýchlejšie.

Ak po testoch už protokolovanie nepotrebujete, môžete vrátiť zmeny z časti 3 a reštartovať Apache2.

4 Odkazy

  • Modul Apache mod_deflate: http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
  • mod_gzip – poskytovanie komprimovaného obsahu webovým serverom Apache: https://linux-console.net/linux_apache_mod_gzip