Search code examples
amazon-web-servicesamazon-s3amazon-cloudfrontcache-control

AWS CloudFront Leverage browser caching


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


Solution

  • 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