login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Webserver


Gegevens:
Geschreven door:
snxs
Moeilijkheidsgraad:
Normaal
Hits:
7013
Punten:
Aantal punten:
 (4.5)
Aantal stemmen:
2
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (5)
 


Tutorial:

Dataverkeer besparen met mod_deflate

1. Het probleem
2. Wat is mod_deflate
3. Het gebruik van mod_deflate, Methode 1: PHP
3.1. Methode 1: PHP
3.2. Methode 2: HTACCESS
4. Uiteindelijke versie en Links
4.1. Uiteindelijke .htaccess document
4.2. Links
2. Voetnoot



1. Het probleem

Sommige mensen zal wat ik nu zeg heel bekend in de oren klinken: Je hebt een PDA of een smartphone met een data bundel. Je moet even snel op het internet om een website te controleren, of om een blog post te maken op je eigen weblog. Alles goed en wel maar het duurt een eeuwigheid om je website te laden. Een kopje koffie en een plaspauze later is je website eindelijk geladen. Hoe zou het zijn om je eigen website 4 keer zo snel te laten laden? Daar ben ik afgelopen week achter gekomen, het is mogelijk met de mod_deflate van apache!

top


2. Wat is mod_deflate?

Mod_deflate is een functie van apache die data kan comprimeren (met behulp van gzip) voor het verzonden wordt. De enige vereiste is dat je browser gzip moet ondersteunen. Gelukkig voor ons webmasters ondersteunen alle moderne browsers tegenwoordig gzip. Voor degenen die niet weten wat gzip is: Het is ongeveer het zelfde als zip en rar, het bestand wordt in een archief ingepakt om zo data te kunnen besparen. Ik vertelde zojuist dat alle moderne browsers tegenwoordig gzip ondersteunen, maar lang niet iedereen heeft zo'n moderne browser. Daarom gaan we straks ook een paar trucjes uitvoeren zodat iedere browser de data juist aangeleverd krijgt. Heel fijn die uitleg, maar hoe werkt dat dan?

top


3. Het gebruik van mod_deflate
3.1. Methode 1: PHP

Mod_deflate is op verschillende manieren toe te passen. De eerste methode die ik uit ga leggen is ook direct de methode die we NIET gaan gebruiken in de toekomst. Het is namelijk de methode voor luie programmeurs, en werkt eigenlijk maar voor de helft.

<?
if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip'))
ob_start("ob_gzhandler");
else
ob_start();
?>

Wat deze methode doet is kijken of de server encoding/compressing accepteert. Wanneer dit het geval is wordt alle HTML die de php file returnt, ingepakt in gzip en verstuurd. Nou voel je hem misschien al aankomen: Wat als je een javascript framework gebruikt dat 300KB (jQuery met de UI extensie) groot is? Dat wordt niet ge-gzipt, hoewel een ge-gzipt bestand al gauw nog maar 30% van de originele grote bedraagt. Een paar regeltjes code boven elke php pagina helpt al een hoop, maar het kan beter en makkelijker!

top


3.2. Methode 2: HTACCESS

De betere manier om het te doen is via een .htaccess document, er komt meer code bij kijken en is iets ingewikkelder. Maar als je deze tutorial goed volgt zou alles goed moeten gaan. Laten we beginnen met het allerbelangrijkste: De eerste regel van je .htaccess document.

AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/x-javascript

Wat er hier gebeurt:
Voor alle txt, html, xml, css en javascipt bestanden wordt de filter DEFLATE gebruikt. Dit betekent in het kort dat de server alle bestanden die opgevraagd worden controleert. Wanneer het opgevraagde bestand één uit de bovenstaande lijst is wordt deze ge-gzipt verzonden. Zo niet, dan komt de server er niet aan en verstuurt het bestand zoals het op de server staat.

De internetwereld zou de internetwereld niet zijn als er geen uitzonderingen bestaan. Sommige browsers ondersteunen gzip toch niet helemaal goed. Hier gaan we dus uitzonderingen voor schrijven.

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch MSIE !no-gzip !gzip-only-text/html

Wat er hier gebeurt:
Wanneer er een match met de opgegeven browser plaats vindt, wordt er een aanpassing in het uitvoeren van de filter gedaan. Zo ondersteunt Netscape 4.x alleen het gzippen van html documenten, staat Netscape 4.06-4.08 helemaal geen gzip toe en doet IE soms net of het Netscape is. Na deze truucjes toegepast te hebben is ons .htaccess document klaar! Langleve de mod_deflate van apache!

top


4. Uiteindelijke versie en links
4.1. Uiteindelijke .htaccess document
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch MSIE !no-gzip !gzip-only-text/html

4.2. Links

http://www.gidnetwork.com/tools/gzip-test.php (Test je ge-gzipte bestanden)
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html (De officiele pagina van mod_deflate)
http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

top


5. Voetnoot

Voor vragen ben ik bereikbaar op:
Website: www[dot]guidobouman[dot]com
E-mail: info[at]guidobouman[dot]com

Copyright rechten verleend aan:
Sitemasters.be

Met vriendelijke groet,
Guido Bouman
Grafisch vormgever & Webscripter

top



« Vorige tutorial : SSL Certificaat maken en ondertekenen

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.012s