AWS CloudFront Leverage browser caching

Richard Kacerek picture Richard Kacerek · Mar 12, 2017 · Viewed 8.4k times · Source

does anyone know how to set up CloudFront Caching correctly? I've got a Jekyll website in S3 and CloudFront set up like this:

Path Pattern: Default (*)

Minimum TTL: 86400
Maximum TTL: 604800
Default TTL: 86400

But when I use Pingdom.com or PageSpeed Insights I get a message:

The following cacheable resources have a short freshness lifetime. Specify an expiration at least one week in the future for the following resources

Answer

Paddez picture Paddez · Mar 12, 2017

The TTL you've configured within CloudFront is in relation to CloudFront's internal caching, and not on a per browser level.

Essentially, you are telling CloudFront to keep the file in it's Edges for a minimum of 86400 seconds etc.

To communicate a maximum/minimum TTL to a browser, you need to add a Cache-Control HTTP header to the requested file.

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html