How do I go about setting the cache control headers for specific files on my web server? I'm running a LAMP environment. I don't want to set the cache control sitewide, just for a few files. I am using CloudFront to distribute content from one of my domains. There is no S3 tie-in here. By default, content expires after 24 hours, which is fine for most of the data on the website, however, there are a few pages that I'd like to have only a 1 hour cache limit on.
-
I've reread your question and replaced the tutorials with (hopefully) better ones regarding your problems; I'm sure there are significantly better ones available still, but these should be easy to find once you are more into the topic. – Steffen Opel Jan 20 '12 at 16:12
2 Answers
Amazon CloudFront (mostly) obeys the regular HTTP cache control mechanism (see RFC 2616) as documented in Amazon CloudFront Object Expiration, specifically:
You can specify a longer expiration time by using the Cache-Control, Pragma, or Expires header on the object in the origin server. [...] CloudFront does not restrict their maximum values.
The minimum expiration time you can specify is one hour. If you specify a minimum time of less than one hour, CloudFront uses one hour.
[emphasis mine]
Thus you will have to orchestrate your LAMP stack to apply the desired Cache-Control: max-age=3600
header specifically to those objects/pages, which will be picked up automatically by CloudFront during its origin fetch thereafter.
How this is done in particular depends on the tools/technologies used to serve the content of course, e.g.:
- Apache - a good tutorial with several example configurations and tips on how to do that with Apache seems to be How to enable file caching with .htaccess in Apache
- PHP - a concise tutorial featuring a good example for PHP in particular seems to be HTTP Caching
For an excellent overview about caching in general I recommend Mark Nottingham's Caching Tutorial.

- 5,638
- 37
- 55