Speed Up websites by enabling .htaccess Caching using mod_expires and mod_headers

Caching files in browser or proxy rather than requesting every time reduces the network traffic between the server, the client.
Usually not everyone has control over their own server configuration file, but sometimes they do have .htaccess file accessibility. You can do efficient caching using the Apache .htaccess file.You need to configure few lines of commands in the .htaccess file instructing the server to handle the caching of different types of files.
Enabling file caching can greatly improve your site’s performance and speed.

2 Apache modules which are included in the distribution helps in configuring the caching in .htaccess file.They are mod_expires and mod_headers.


They are not turned on by default but you can check it by using run httpd -l; command .This will list available modules.Usually your website hosting environment will have these modules enabled.
If these modules are not enabled and if you have access to the server configuration you can enable this by uncommenting the following or similar lines in the server configuration files.

-enable-module=expires and -enable-module=headers

Using Apache Module mod_expires
Apache Module mod_expires controls the setting of the Expires HTTP header and the max-age directive of the Cache-Control HTTP header in server response.Browser checks the headers and if cached, the document may be fetched from the cache rather than from the source until expire time has passed.

For example you can add the following in the .htaccess file

1
2
3
4
5
6
7
8
9
# Begin Cache Control
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
</IfModule>

.htaccess Time examples

1
2
3
4
5
6
7
300	 5 Minute
3600	 1 Hour
86400    1 DAY
259200   3 DAY
604800   1 WEEK
2419200  1 MONTH
29030400 12 MONTH

Apache Module mod_headers-Static content cache headers
This module provides directives to control and modify HTTP request and response headers.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Turn on Expires and set default expires to 1 day
ExpiresActive On
ExpiresDefault A86400
 
# Set up caching on media files for 1 month
<FilesMatch ".(ico|gif|jpg|png|flv|pdf|swf|mov|mp3)$">
ExpiresDefault A2419200
Header append Cache-Control "public"
</FilesMatch>
 
# Set up 1 Hour caching on commonly updated files
<FilesMatch ".(xml|txt|html|js|css)$">
ExpiresDefault A3600
Header append Cache-Control "private, must-revalidate"
</FilesMatch>

Cache-control: public means the cached version can be saved by proxies and other intermediate servers.
Cache-control: private means the file is different for different users and their private browser can cache it, but not public proxies.
Cache-control: no-cache means the file should not be cached.

This was a very limited overview of a cache setup for your Apache website.Please let me know your Comments, thoughts and if I am wrong my mistakes or any additions.

Before you Go,

Before you go, subscribe to get latest technology articles right in your mailbox!.

One thought on “Speed Up websites by enabling .htaccess Caching using mod_expires and mod_headers

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Shares