我需要更新所有AmazonS3的云文件中的缓存控制头.但是,我无法弄清楚如何使用jclouds API.我正在使用apache jclouds插件.我得到了两个相关的答案:
第一个答案是建议使用SwiftKey Api类,这在grails的jcloud插件中是不可用的.第二个答案是使用AWS java sdk已经有一个grails包装插件https://grails.org/plugin/aws-sdk但它不支持元数据更新.
我想提高我的网站加载速度,所以我使用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删除我的文件.我只想添加缓存元数据以获得最长缓存时间或/和文件到期时间.
我完全和这个混淆了.有人可以解释一下我必须使用的东西:对象到期还是缓存控制?