Aktivujte kompresi - mod_deflate
Mod_deflate v Apache serveru slouží k automatické komprimaci přenášených dat. Většina webové stránky je běžně přenášena jako čistý text a vzhledem k tomu, že HTML je podmnožina XML, není to příliš optimální. Pokud před odesláním provedeme bezeztrátovou GZIP kompresi přenášených dat, ušetříme až 90% velikosti. A to už může být například na mobilním připojení znát.
Je dobré, že mod_deflate celou komprimaci zařídí za nás, aniž bychom museli jakkoliv měnit obsah webu. Dokonce bude komprimaci provádět jen tehdy, pokud klient dokáže přenesený obsah opět úspěšně dekomprimovat.
Co všechno se vyplatí komprimovat?
Komprimace přenášeného obsahu ale spotřebovává trochu výkonu webserveru a tak je dobré nekomprimovat všechno, ale jen to, co má smysl. Například obrázky už jsou většinou komprimované a tak další kompresí již nic neušetříme.
Vyplatí se tedy mod_deflate aktivovat pro
HTML
XML
Javascripty
CSS
textový obsah
Aktivace a nastavení mod_deflate
Aktivace mod_deflate se provádí pomocí
sudo a2enmod deflate
Případná dekativace se pak provádí pomocí příkazu
sudo a2dismod deflate
Po úspěšném zapnutí nebo vypnut mod_deflate je nutné restartovat Apache server.
sudo apachectl
Konfigurace mod_deflate se provádí v souboru
/etc/apache2/mods-available/deflate.conf
Výchozí konfigurace je ale pro začátek dostačující.
Využijte načítání do mezipaměti prohlížeče – mod_expires nebo mod_headers
Další důležitou věcí, která umí výrazně zvýšit výkon vašeho webového serveru pro návštěvníky, je cachování statických souborů. Proč návštěvíkovi stále dokola posílat všechny bannery a obrázky, když se zcela jistě, za těch pár vteřin od posledního kliknutí, nezměnily. Každému souboru, který posíláme, můžeme v hlavičkách nastavit expiraci a webové prohlížeče si pak tento soubor nacachují a při příštím požadavku ho již znovu nestahují. K dalšímu stažení pak dojde až po uplynutí nastavené doby.
Čemu nastavovat expiraci?
Opět jako u mod_deflate je několik typů souborů, kterým se vyplatí expiraci nějak smysluplně nastavit. Zcela určitě se vyplatí ji nastavit pro všechen statický obsah vašich stránek. Obrázky, CSS styly a Javascripty se u rozběhlého webu mění jen málokdy, takže jejich cachování není problém.
V případě, že potřebujete soubor změnit a vyhnout se tomu, že některým návštěvníkům se stále bude načítat z cache, je nutné změnit jméno souboru. Ve stránce je pak možné doplnit za název souboru ?1.
Aktivace a nastavení cachování
Cachování je možné opět zapnout bez toho, abychom museli jakkoliv zasahovat do našich stránek a museli v nich cokoliv měnit.
Pro cachování je možné v Apache využít dva mody. Mod_expires nebo mod_headers.
Oba dva mody je nutné aktivovat.
Nastavení mod_headers
Aktivace se provádí pomocí příkazu
sudo a2enmod headers
Do .htaccess je pak potřeba přidat například
<IfModule mod_headers.c>
# WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# WEEK
<FilesMatch "\.(js|css|swf)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
</IfModule>
Nastavení mod_expires
Aktivace se provádí příkazem
sudo a2enmod expires
Ukázkový .htaccess je například
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A600
ExpiresByType text/javascript A604800
ExpiresByType application/javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType image/x-icon A604800
ExpiresByType text/html A60
</IfModule>
Shrnutí provedených optimalizací
Aktivací mod_deflate a mod_expires nebo mod_headers docílíme značného zvýšení výkonu webových stránek. Pokud návštěvník surfuje například na mobilním EDGE připojení, je to vidět na první pohled. První přístup na webové stránky trvá o trochu déle, protože se musí postahovat kde co, ale další pohyb na webových stránkách je už výrazně plynulejší Nestahuje se totiž spousta obrázků a styl stránky a javascripty jsou již také načteny. Jediné co se stahuje je konkrétní stránka, která je komprimována takže se přenáší výrazně méně dat.
Nemuseli jsme kvůli tomu změnit ani řádku kódu webových stránek!
Pokud by na Raspberry Pi bylo možné nainstalovat mod_pagespeed od Googlu, bylo by možné i další optimalizace provádět bez zásahů do kódu webových stránek. Ale to bohužel možné není a tak se v příštím článku zaměřím na to, jak dosáhnout dalších optimalizací jednoduchými úpravami webových stránek.
Změny výkonu je možné kontrolovat například nástrojem PageSpeed Insights nebo na stránce Pingdom Website Speed Test.