Speed up your website using Apache2 mod_deflate for your virtual host

I want to share my experience in my efforts to improve the performance of my website using mod_deflate. mod_deflate compresses content before sending them back to the browser which reduces considerable amount of traffic time. Compressed content is supported by most newer browsers. For older browser we have included directives not to compress content.

Enabling mod_deflate. Standard Apache2 installation already comes with mod_deflate. All we need is enable it and then restart Apache2.

  
   a2enmod deflate
   /etc/init.d/apache2 restart
    
  

There are a few ways to setup mod_deflate. I have mine working by inserting the following lines inside my Virtualhost entry just before the closing </VirtualHost>

   
 <VirtualHost ....>
    .
    .
    .
   
    # Compress all content   
    SetOutputFilter DEFLATE

    # Exclude these file types
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip

    # Logging 
    DeflateFilterNote Input instream
    DeflateFilterNote Output outstream
    DeflateFilterNote Ratio ratio
    LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
    CustomLog /var/log/apache2/deflate.log deflate
    # End logging

    # Handle old browsers that do not support compression
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    
 </VirtualHost>
    
    

What we have above is directing Apache2 to compress all content except the specified file types (line 8 and 11). The logging directives are optional but are helpful in testing your setup. The last three lines direct Apache2 not to compress content for older browsers specified.

Now test your setup to check for errors.

   
   apache2ctl -t
     
       

Finally restart/reload Apache2

   
   /etc/init.d/apache2 force-reload
     
       

Below is a sample deflate log

"GET /kauswagan/images/prog.gif HTTP/1.1" -/- (-%)
"GET /kauswagan/javax.faces.resource/images/ui-icons_222222_256x240.png.xhtml?ln=primefaces-glass-x HTTP/1.1" -/- (-%)
"GET /kauswagan/javax.faces.resource/images/default.png.xhtml?ln=primefaces-glass-x HTTP/1.1" -/- (-%)
"GET /kauswagan/images/collapse.gif HTTP/1.1" -/- (-%)
"GET /kauswagan/HowtoBlogs.xhtml?b=444 HTTP/1.1" 10187/50622 (20%)

Please visit the Apache website for more about mod_deflate here.

This guide was tested to work in Debian Linux. In Debian with Apache2 virtual host configuration files are located at /etc/apache2/sites-available.

Good luck.

If you like the article, please share.
(Site URL pattern has changed as a result social actions counter was reset.)



Comment icon   Comments (Newest first)