Amazon S3:缓存控制和到期日差异以及通过REST API设置

Dim*_*lov 7 rest caching metadata cache-control amazon-s3

我想提高我的网站加载速度,所以我使用http://gtmetrix.com/来检查我可以改进的地方.我获得的"利用浏览器缓存"的最低评级之一.我发现,我的文件(主要是图像)有问题"未指定过期".

好吧,问题很明显,我想.我开始谷歌搜索,我发现亚马逊S3更喜欢缓存控制元数据超过有效期(我失去了这个链接,现在我想也许我误解了一些东西).无论如何,我开始寻找如何将缓存控制元添加到S3对象.我找到了这个页面:http://www.bucketexplorer.com/documentation/amazon-s3--how-to-set-cache-control-header-for-s3-object.html

我了解到,我必须在我的PUT查询中添加字符串.

x-amz-meta-Cache-Control : max-age= <value in seconds> //(等号和数字之间不需要空格(我在这里犯了错误)).

我使用构造:Cache-control:max-age=1296000它工作正常.

之后我阅读了 https://developers.google.com/speed/docs/best-practices/caching 这篇文章告诉我:1)"将过期设置为至少一个月,最好是一年,以后".

2)"我们更喜欢Expires over Cache-Control:max-age,因为它受到更广泛的支持."(在Recommendations主题中).

所以,我开始寻找将过期日期设置为S3对象的方法.我发现了这个:http: //www.bucketexplorer.com/documentation/amazon-s3--set-object-expiration-on-amazon-s3-objects-put-get-delete-bucket-lifecycle.html

我发现:"使用Amazon S3对象生命周期管理,您可以在Amazon S3对象上定义对象到期.一旦为S3对象定义的生命周期到期,Amazon S3将删除此类对象.因此,当您想要保留数据时在S3上仅限时间,并且您希望它由Amazon S3自动删除,您可以设置对象到期."

我不想从S3删除我的文件.我只想添加缓存元数据以获得最长缓存时间或/和文件到期时间.

我完全和这个混淆了.有人可以解释一下我必须使用的东西:对象到期还是缓存控制?

ash*_*e11 8

S3允许您指定缓存控制的max-age和Expires标头,CloudFront允许您为缓存行为指定Minimum TTL,Maximum TTL和Default TTL.并且这些标题只告诉对象的有效期何时在缓存(云端或浏览器缓存)中过期以读取它们的相关性,请阅读以下链接 http://docs.aws.amazon.com/AmazonCloudFront/latest/ DeveloperGuide/Expiration.html#ExpirationDownloadDist

为了让你利用浏览器缓存,只需为s3上的所有对象指定缓存控制头.执行 为存储桶中的现有对象添加缓存控制的步骤

  1. git clone https://github.com/s3tools/s3cmd
  2. 运行s3cmd --configure(将要求您输入两个密钥 - 从确认电子邮件或亚马逊帐户页面复制并粘贴它们.复制时要小心!它们区分大小写,必须准确输入或保留获取有关无效签名或类似信息的错误.请记住向密钥添加s3:ListAllMyBuckets权限,否则在测试访问时会出现AccessDenied错误.)
  3. ./s3cmd --recursive modify --add-header ="Cache-Control:public,max-age = 31536000"s3:// your_bucket_name /


Jus*_*tin 7

您的文件不会被删除,也不会在到期日期后缓存.

亚马逊的文档说:

的过期日期和时间在后的Expires头通过,再次CloudFront的从源服务器的每个的边缘位置接收对对象的请求时获取的对象.

我们建议您使用Cache-Control max-age指令而不是Expires头字段来控制对象缓存.如果为Cache-Control max-age和Expires指定值,则CloudFront仅使用max-age的值.


syl*_*bre 3

“Amazon S3 对象生命周期管理”根据您可以定义的规则从您的存储桶中刷新一些对象。这仅与存储有关。

您要做的就是在设置 Cache-Control 标头时设置 HTTP 请求的 Expires 标头。它的工作原理是相同的:您只需将此标头添加到您的 PUT 查询中即可。Expires 不起作用,因为 Cache-Control:Expires 给出一个日期。例如:2013 年 1 月 31 日星期六 23:59:59 GMT

您可以阅读以下内容:https://web.archive.org/web/20130531222309/http ://www.newvem.com/how-to-add-caching-headers-to-your-objects-using-amazon-s3 /