【发布时间】:2012-12-02 15:10:37
【问题描述】:
我最近开始使用 Amazon S3 向我的访问者提供图像,因为这将减少服务器负载。现在,有一个新问题:今天我查看了我的 AWS 账单。我注意到我有一笔巨额账单在等着我 - 20 天内总共有 4TB 的 AWS 数据传输。
显然,这是因为大量的传出 Amazon S3 流量(到 Cloudflare,然后将其提供给访问者)。现在我应该通过设置缓存标头来减少请求文件的数量(因为 Cloudflare 的 Crawler 会尊重这一点)。我已经像这样修改了我的代码:
$s3->putObjectFile($path, $bucket , 'images/'.$id.'.jpg', S3::ACL_PUBLIC_READ);
到
$s3->putObjectFile($path, $bucket , 'images/'.$id.'.jpg', S3::ACL_PUBLIC_READ, array('Cache-Control' => 'public,max-age=31536000'));
但还是不行。 Cloudflare 不尊重缓存,因为 Cache-Control 不会在标头中显示为“Cache-Control”,而是显示为“x-amz-meta-cachecontrol”。 Cloudflare 忽略了这一点。
有人对此有简单的解决方案吗?
TL;DR:我和这个人有或多或少相同的问题:http://support.bucketexplorer.com/topic734.html(那是在 2008 年)
编辑:我偶然发现了这个:Amazon S3 not caching images 但不幸的是,该解决方案对我不起作用。
编辑 2: 原来它不起作用,因为我使用的是旧版本的“Amazon S3 类”。我更新了,代码现在可以工作了。
感谢您的宝贵时间。
【问题讨论】:
标签: php caching amazon-s3 amazon cloudflare