Apache2 gzip compression: How do I speed up my website download time?

One of the things people tend to forget is the ability for web servers to compress content before sending it back to client. Client’s browser then uncompresses the data and displays it to the user. Pretty much all of the recent browsers support gzip compression. In this post, I will go over how to setup apache2 to use compression. First let’s see if your Apache installation has “deflate” enabled. You can check to see if you have deflate by typing:

# /usr/local/apache2/bin/apachectl -t -D DUMP_MODULES
Loaded Modules:
...
deflate_module (static)
...
Syntax OK

If you don’t have have deflate_module, you would have to recompile your apache with “–enable-deflate” option.

Going forward, I am going to assume you have deflate_module. Add the following to your apache conf file:

<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4\.0[678] no-gzip\
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
</Location>

The main thing you need to configure is the line which says “no-gzip dont-vary” also in bold above. This tells apache to not compress certain type of files. I have noticed on some of my sites that swf (flash) files do not work as expected if they are compressed. So if you have swf files in your site, you may want to add |swf right after png.

This is all what it takes for you to enable gzip compression in Apache2. Once you restart your apache so it reads the conf file, you can test if your site is getting compressed or not by using this tool: http://www.gidnetwork.com/tools/gzip-test.php

Here are the results for my blog:

Results for: http://crazytoon.com
Web page compressed? Yes
Compression type? gzip
Size, Markup (bytes) 57,337
Size, Compressed (bytes) 11,666
Compression % 79.7

————————————-
DISCLAIMER: Please be smart and use code found on internet carefully. Make backups often. And yeah.. last but not least.. I am not responsible for any damage caused by this posting. Use at your own risk.

11 thoughts on “Apache2 gzip compression: How do I speed up my website download time?

  1. Evert

    Even though on-the-fly compression will help you in the short term, you’ll soon hit CPU limits if your site will start to grow.

    We stricly use gzip for pages which can be cached for a couple of minutes, pre-generate the pages pre-compressing them. So those pages will only be compressed every 5 minutes or so instead of for every request.

  2. Freddy

    Just remember that the mod_deflate rules are virtualhost specific! They are NOT system wide.

    Evert is also somewhat correct BUT with todays 8core cpus memory management is where you have to worry the most not cpu on a apache server.

  3. Toasty

    Freddy, when you say memory management is ‘where you have to worry’, what do you mean specifically? Do you just mean running out of memory (and having to swap) or something else like being limited by internal RAMCPU bandwidth?

    Plus you do still have to worry a lot about CPU these days if you’re doing anything reasonably complex/dynamic.

  4. Evert

    8 cores just mean it takes longer before you hits this bottleneck, so thats a non-argument. For low-traffic sites, such as a blog, its of course fine =)

  5. Pingback: Decreasing bandwidth usage of my blog | TheElitist

  6. Pingback: Kari’s World » Blog Archive » Running with breaks on

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>