Enabling Apache content compression for performance increase

One simple and highly recommended way to improve performance of sites, especially those with large Javascript and CSS files is to enable compression of these files when they are sent to users. By default this behaviour is not enabled by default within Apache, however there is a simple block of code that can be added to your configuration to enable it and achieve compression rates of over 75% on your page load, which given the drop off rate of site visitors for slow loading pages (as reflected by Google’s ranking algorithm) is a very easy win.

Although the below works in the majority of cases, it is important to test your site after completing the change to ensure there are no issues and you may need to make some changes to the files you are allowing to be compressed if you do see any issues.

How to

First off, check that mod_deflate is enabled within your Apache configuration. The easiest way to do this is to output the configuration of Apache and check for “deflate_module” using the following command:

# apachectl -M | grep deflate
deflate_module

 

If this does not show, you will need to pre-append “LoadModule deflate_module modules/mod_deflate.so” to the below content.

The below directives should be added to your Apache configuration. The best way to manage this is to create a new configuration file within the Apache directory (the below locations may need to be adjusted for your environment).

# vi /etc/httpd/conf.d/deflate.conf

 

Then add the below:

<IfModule mod_mime.c>
AddType application/x-javascript .js
AddType text/css .css
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/atom_xml application/javascript application/rss+xml application/x-javascript application/x-httpd-php application/xhtml+xml application/xml image/svg+xml image/x-icon text/css text/html text/plain text/richtext text/x-component text/xml text/xsd text/xsl
<IfModule mod_setenvif.c>
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4.0[678] no-gzip
 BrowserMatch bMSIE !no-gzip !gzip-only-text/html
</IfModule>
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>

 

Once this file is saved, check that the Apache configuration is still valid, before restarting Apache.

# apachectl -t
Syntax OK

# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

 

Now this is complete, you can test your site to check for compression and what should be a drastically improved load time.

Leave a Reply

Your email address will not be published. Required fields are marked *