Help Docs Server Administration Linux Server Administration Apache Web Server Implementing Apache mod_deflate Directives

Implementing Apache mod_deflate Directives

Learn to implement Apache mod_deflate for faster website loading. Compress content, save bandwidth, and understand the CPU tradeoff on your server.

Improving your website’s loading speed is crucial for user experience and SEO. One effective way to achieve this is by compressing your website’s content before it’s sent to visitors’ browsers. Apache’s mod_deflate module can help you do just that by reducing file sizes, leading to faster load times and lower bandwidth usage.

What is mod_deflate?

Mod_deflate is an Apache module that allows your server to compress content before sending it to a user’s browser. When a user requests a page from your site, mod_deflate intercepts the server’s response (like HTML, CSS, or JavaScript files) and compresses it using algorithms like gzip or deflate. Modern web browsers can then automatically decompress this content, displaying it to the user. The result is a smaller data transfer, which means your pages load more quickly, especially for users on slower internet connections.

Availability on Liquid Web servers

The good news is that mod_deflate comes installed and is typically enabled by default on Liquid Web’s fully-managed cPanel, InterWorx, and Plesk servers. This means your server is likely already equipped to serve compressed content, helping optimize your site’s performance out of the box.

Understanding the tradeoff: CPU usage vs. bandwidth savings

While mod_deflate offers significant benefits in bandwidth savings and faster page loads, it’s important to understand its impact on your server. Compressing content requires server CPU resources. The higher the compression level, the more CPU power is used. For most websites, the benefits of compression outweigh the additional CPU load.

However, you should be mindful of this tradeoff:

  • Bandwidth Savings: Reduced file sizes mean less data transferred, saving bandwidth costs and speeding up content delivery.
  • CPU Usage: The compression process itself consumes CPU cycles. Setting an extremely high compression level on a very busy server could potentially lead to increased CPU load.

It’s about finding the right balance for your specific server resources and traffic. It’s also inefficient to compress files that are already compressed (e.g., JPEG images, ZIP files), as this can sometimes even increase their size and wastes CPU resources.

Enabling and configuring mod_deflate

Even though mod_deflate is usually active on Liquid Web managed servers, you might want to customize its configuration or ensure it’s working as expected. You can typically add mod_deflate directives to your server’s Apache configuration file (e.g., httpd.conf, a virtual host file, or an include file) or within an .htaccess file in your website’s document root.

Basic configuration: Specifying content types to compress

You need to tell Apache which types of files it should compress. The AddOutputFilterByType directive is used for this. It’s best to compress text-based content like HTML, CSS, JavaScript, XML, and plain text. Avoid compressing images (like JPG, PNG, GIF), videos, PDFs, or other binary files that are often already compressed or don’t benefit from this type of compression.

Here’s a common example configuration:

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/json
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Adjusting the compression level

The DeflateCompressionLevel directive allows you to control the “strength” of the compression. It accepts values from 1 (lowest compression, fastest, least CPU usage) to 9 (highest compression, slowest, most CPU usage). The default level is often 6 or 7, which provides a good balance between compression ratio and CPU load.

<IfModule mod_deflate.c>
  DeflateCompressionLevel 7
</IfModule>

If your server has a high CPU load, you might consider lowering this value. If you have ample CPU resources and want to maximize bandwidth savings, you could try a higher value. Monitor your server’s performance after making changes.

Excluding specific content or user agents

Sometimes, you might need to prevent certain content or specific user agents (browsers) from receiving compressed content, particularly very old browsers that might have issues.

To handle potential issues with proxies or older browsers, you can add directives like these:

<IfModule mod_deflate.c>
  # Netscape 4.x has some problems...
  BrowserMatch ^Mozilla/4 gzip-only-text/html

  # Netscape 4.06-4.08 have some more problems
  BrowserMatch ^Mozilla/4.0[678] no-gzip

  # MSIE masquerades as Netscape, but it is fine
  BrowserMatch bMSIE !no-gzip !gzip-only-text/html

  # Don't compress images or other already compressed files
  SetEnvIfNoCase .(?:gif|jpe?g|png|webp|zip|gz|tgz|bz2|rar|mp3|mp4|mov|avi|flv|pdf)$ no-gzip dont-vary

  # Make sure proxies don't deliver the wrong content
  Header append Vary User-Agent env=!dont-vary
</IfModule>

The SetEnvIfNoCase directive in the example above prevents re-compressing common image and archive file types.

Applying changes

If you modify an .htaccess file, the changes are usually applied immediately. If you are editing the main Apache configuration files (e.g., httpd.conf, or files within conf.d/), you will need to reload or restart Apache for the new settings to take effect.

Verifying mod_deflate is working

After you’ve configured mod_deflate, it’s important to verify that it’s working correctly. You can do this in a couple of ways:

  • Online Tools: Search for “gzip compression test” or “deflate compression test” online. Many free tools allow you to enter your website URL and will report whether compression is enabled.
  • Browser Developer Tools: Open your website in a browser (like Chrome or Firefox), then open the Developer Tools (usually by pressing F12). Go to the “Network” tab, and then refresh your page. Click on a request for a text-based asset (like your main HTML document, a CSS file, or a JavaScript file). In the “Headers” section for that request, look for the Content-Encoding response header. If you see gzip or deflate, then mod_deflate is working for that resource.

Conclusion

Implementing mod_deflate is a straightforward way to improve your website’s performance by reducing the size of the content delivered to your visitors. This leads to faster loading times, a better user experience, and can even positively impact your SEO rankings. While it’s generally enabled on Liquid Web’s managed servers, knowing how to configure and verify it ensures you’re getting the most out of this valuable Apache module. Always remember to balance compression levels with your server’s CPU capacity for optimal results.

Was this article helpful?