Http Compression
In deel 1 van
de blogpost reeks over het verbeteren van de performantie van je
website heb ik gesteld dat één van de vuistregels van web
performantie is om 'zo weinig mogelijk te versturen' van
de server naar de browser. Een manier om dit te bewerkstelligen is
het gebruiken van http compression op je webserver. Zoals we later
zullen zien is dit heel gemakkelijk in te stellen op IIS 7
Wat is http compression?
Http compressie reduceert de omvang van de bestanden die
verstuurd worden van de server naar de browser door deze bestanden
in een compressie formaat te versturen.
De server analyseert de "Accept Encoding" header in de request
van de browser, dit is de manier waarop de browser aan de server te
kennen heeft dat het gecompresseerde content kan verwerken. Als de
server deze header aantreft zal het in zijn response de content in
gecompresseerd formaat versturen. Als de server een request
ontvangt waarbij de browser geen gecompresseerd formaat ondersteunt
zal het zijn response in een normaal formaat versturen.
Http compression in IIS 7
Http compression is ingebouwd vanaf IIS 7. Als je nog steeds IIS
6 gebruikt kun je deze blogpost raadplegen om http compressie in te
schakelen met IIS 6 (http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx)
Op IIS 7 is standaard enkel static compression
ingeschakeld. Static compression betekent dat IIS bij de eerste
request de statische bestanden zoals Javascript en CSS bestanden
zal compresseren, en die vervolgens gecached zal bewaren zodat het
bij een volgende request deze gecachete en gecompresseerde
bestanden kan aanbieden.
Bij Dynamic compression wordt ook dynamische
content gecompresseerd. Dat is ten koste van een kleine belasting,
ongeveer 1%, op de processor, maar als je zo krap zit aan
rekenkracht heb je een groter probleem dan dynamische compressie.
Bovendien kun je IIS 7 opdragen om dynamische compressie uit te
schakelen van zodra de processor belasting een bepaalde grens
overschrijdt.
Http compression demo met IIS 7.5
Om de voordelen van IIS compressie te demonstreren gaan we een
kleine test doen. Ik heb een testsite geïnstalleerd en static en
dynamic compression op de webserver uitgeschakeld.
Als ik deGoogle Page Speed
test uitvoer op de homepage, krijg ik een Page Speed score van
76/100 (zie afbeelding 1). De rode indicator geeft aan compressie
een kritische factor voor de performantie is:
"If you compress your files with gzip, their filesize will
be decreased with 104.4 KiB (a gain of 71%)"

Afbeelding 1 Met http compression uitgeschakeld,
bedraagt de Page Speed score 76/100
Voer de volgende stappen uit om compression in te schakelen in
IIS:
- Open IIS 7.5
- Kies je website in de boomstructuur
- Dubbelklik op 'Compression' in het Features pane
- Vink zowel 'enable static content compression' als 'enable
dynamic content compression' aan (zie afbeelding 2)
- Klik 'apply' in het Actions Pane om de aanpassingen op te
slaan

Afbeeling 2 Static en dynamic content
compression inschakelen in IIS 7.5
Wanneer ik nogmaal de Page Speed test laat uitvoeren levert dit
een enorme snelheidswinst op. In plaats van 76/100 krijgt mijn
homepage nu een Page Speed score van 91/100 (zie afbeelding
3)

Afbeelding 3 Na het inschakelen van http
compression op IIS, krijgt de homepage een Page Speed score van
91/100
Conclusie
Het inschakelen van static en dynamic compression in IIS levert
een enorme reductie op van de grootte van de bestanden die de
server naar de browser stuurt.
Dit resulteert niet enkele in een aanzienlijke
performantiewinst, maar ook in een beperkter verbruik van de
bandbreedte.
Nu dat alle grote browsers http compressie ondersteunen is er
eigelnlijk geen goede reden meer om http compressie niet in te
schakelen.