2

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.

1
  • 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. Jan 20, 2012 at 16:12

2 Answers 2

3

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.:

For an excellent overview about caching in general I recommend Mark Nottingham's Caching Tutorial.

0
1

Fyi, the answer above is still correct but slightly out of date in one respect, as Cloudfront now supports a minimum TTL of 0.

Amazon Developer Guide: Expiration1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .