Eriks blogg

Erik är vår CTO som sköter våra servrar och gärna skriver om verktyg för webbuteckling.

Nu fortsätter vi med lite hastighetsoptimering här i bloggen. Tidigare har jag bland annat skrivit om minifiering av JavaScript- och CSS-filer. Nu är det dags att lära sig hur man styr webbserverns direktiv om cache och komprimering. Här finns det mycket bandbredd att spara. Alla exempel är för webbservern Apache. Den är ju uteslutande den mest använda webbservern på nätet.

Spara innehållet i cachen

Många av de statiska filerna som dina besökare laddar är väldigt sällan förändrade. Därför är det lämpligt att inte behöva ladda dem på nytt vid varje besök. Istället vill vi låta webbläsaren spara dem i sin cache och därför hämta dem från hårddisken istället för webbservern. Det här sparar både bandbredd och minskar laddningstiden. En ytterligare bonus är att din webbserver blir mindre belastad och kan därför hantera flera besökare.

Det är väldigt enkelt att konfiguera cache i Apache. Det enda som behövs är egentligen följande rader i sitens konfigurationsfil. Om du använder ett webbhotell är du nog hänvisad till .htaccess-filen som ligger i hemsidans rot. Om du har en egen webbserver igång har du tillgång till konfigurationen på annan plats. Det viktiga är att du har tillägget mod_expires installerat i Apache.

<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 seconds"
 ExpiresByType text/html "access plus 1 week"
 ExpiresByType image/gif "access plus 1 week"
 ExpiresByType image/jpeg "access plus 1 week"
 ExpiresByType image/png "access plus 1 week"
 ExpiresByType text/css "access plus 1 week"
 ExpiresByType text/javascript "access plus 1 week"
 ExpiresByType application/javascript "access plus 1 week"
 ExpiresByType application/json "access plus 1 week"
 ExpiresByType text/xml "access plus 60 minutes"
</IfModule>

I exemplet här instruerar webbservern webbläsaren att spara vissa filtyper i en vecka efter nedladdningen. Undantaget är XML-filen. RSS-flöden är i XML-format och uppdateras förmodligen oftare en än gång per vecka.

Komprimera allt innehåll

Alla nya webbläsare klarar av att ladda hem innehåll i komprimerad form. Det innebär att webbservern kan komprimera filerna innan de förs över till klienten. Här kan vi då minska mängden överförd data och snabba upp sidladdningen. För detta krävs ytterligare en modul, nämligen mod_deflate.

I regel brukar det vara mer tacksamt att komprimera textbaserade filer än binära (exempelvis bilder). Det beror på att de binära filer man använder oftast redan är väldigt hårt reducerade i filstorlek. Därför väljer vi att bara komprimera HTML, CSS, Javascript och XML. På samma sätt som du lade till cache-direktiven i konfigurationen så kan du lägga till följande direktiv för komprimering.

<IfModule mod_deflate.c>
 DeflateCompressionLevel 9
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE application/xml
 AddOutputFilterByType DEFLATE application/xhtml+xml
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/javascript
 AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

Notera här första raden där man anger hur hårt filerna ska komprimeras. Här är 9 högsta nivån och kräver mest av serverns CPU vid komprimeringen. Med dagens datorer är det dock ingen större skillnad i hastighet för såna här små filer. Därför kan du köra med högsta nivån. Skulle du märka negativa prestandaskillnader är det bara att justera den.

Märk skillnaden

För att testa komprimeringen kan du använda HTTP Compression Test som låter dig testa och se om den är aktiv. Det enda du behöver göra är att ange adressen till din hemsida och du får sen ett utlåtande om statusen.

Ett enkelt sätt att se hur laddningstiden snabbas upp är att du laddar sidan i din favoritwebbläsare en gång och sedan en gång till. Vid andra tillfället ska skillnaden vara märkbar. Dessutom kan du kika i webbserverns log-fil och se hur mycket färre filer som förs över vid andra tillfället.

Vill du veta mer om vad experterna tycker om komprimering och cache kan du läsa vidare om vad Google skriver. Där finns både information om komprimering och cache.

Skrivet av: Erik Hedberg
Kategorier: Verktyg