Apache htaccess: Add Cache-Control header per file type
Written by Guillermo Garron
Date: 2012-12-29 10:38:32 00:00
This tip is specially useful if you are serving a static file using Apache.
I know a lot of you may say, why not use Nginx? And that is a valid question, but sometimes you may need .htacces file for other sites beside your static site right? In those cases Apache is your option.
In the past I used to install Nginx in front of Apache just to serve static sites with Nginx, and make Nginx send back to Apache PHP requests. After learning about Apache MPM worker I now prefer to install just Apache with external PHP
Well, too much introduction, let's go to the tip.
Insert Cache-Control header with .htaccess file on a per file type basis
Edit your .htaccess file and insert something like this:
# 1 Month for all your static assets
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 1 DAYS for rss feeds and robots
<filesMatch ".(xml|txt)$">
Header set Cache-Control "max-age=86400, public, must-revalidate"
</filesMatch>
# 4 HOURS for your real articles files
<filesMatch ".(html|htm)$">
Header set Cache-Control "max-age=14400, must-revalidate"
</filesMatch>
I use something like this for my Jekyll powered static site.