gpt4 book ai didi

php - 如何降低数据传输成本? Amazon S3 --> Cloudflare --> 访问者

转载 作者:可可西里 更新时间:2023-10-31 22:15:17 30 4
gpt4 key购买 nike

我最近开始使用 Amazon S3 为访问者提供图像,因为这会减少服务器负载。现在,出现了一个新问题:今天我查看了我的 AWS 账单。我注意到我有一大笔账单等着我——20 天内总共有 4TB 的 AWS 数据传输。

显然,这是因为大量传出 Amazon S3 流量(到 Cloudflare,然后将其提供给访问者)。现在我应该通过设置缓存 header 来减少请求的文件数量(因为 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 在 header 中未显示为“Cache-Control”,而是显示为“x-amz-meta-cachecontrol”。 Cloudflare 忽略了这一点。

有人对此有简单的解决方案吗?

TL;DR:我或多或少和这个人有同样的问题:http://support.bucketexplorer.com/topic734.html (那是在 2008 年)

编辑:我偶然发现了这个:Amazon S3 not caching images但不幸的是,该解决方案对我不起作用。

编辑 2: 结果证明它不起作用,因为我使用的是“Amazon S3 类”的旧版本。我更新了,代码现在可以工作了。

感谢您的宝贵时间。

最佳答案

如果您收到“x-amz-meta-cachecontrol”,很可能是您没有正确设置 header 。这可能只是您在代码中执行此操作的确切方式。这应该工作。我推断这是使用 Amazon S3 PHP 类的 php?

试试这个:

$s3->putObject(file_get_contents($path), $bucket, $url, S3::ACL_PUBLIC_READ, array(), array('Cache-Control' => 'max-age=31536000, public'));

S3 PHP docs putObjectFile 列在 Legacy Methods 下:

putObjectFile (string $file, 
string $bucket,
string $uri,
[constant $acl = S3::ACL_PRIVATE],
[array $metaHeaders = array()],
[string $contentType = null])

与此比较:

putObject (mixed $input, 
string $bucket,
string $uri,
[constant $acl = S3::ACL_PRIVATE],
[array $metaHeaders = array()],
[array $requestHeaders = array()])

您需要将缓存控制设置为请求 header ,但似乎无法使用putObjectFile 设置请求 header ,只能设置元 header 。您必须使用 putObject 并为元 header 提供一个空数组,然后为另一个包含请求 header (包括缓存控制)的数组。

您还可以尝试我在下面列出的其他一些工作示例。

另见:

How to set the Expires and Cache-Control headers for all objects in an AWS S3 bucket with a PHP script (php)

Updating caching headers for Amazon S3 and CloudFront ( python )

Set cache-control for entire S3 bucket automatically (using bucket policies?)

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html?r=5225

关于php - 如何降低数据传输成本? Amazon S3 --> Cloudflare --> 访问者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13881692/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com