簡體   English   中英

如何降低數據傳輸成本?亞馬遜S3 - > Cloudflare - >訪客

[英]How can I reduce my data transfer cost? Amazon S3 --> Cloudflare --> Visitor

我最近開始使用Amazon S3向訪問者提供圖像,因為這會減少服務器負載。 現在,出現了一個新問題:今天我查看了我的AWS賬單。 我注意到我有一個巨大的賬單等着我 - 在20天內總共有4TB的AWS數據傳輸。

顯然這是因為大量傳出的Amazon S3流量(到Cloudflare然后將其提供給訪問者)。 現在我應該通過設置Cache頭來減少所請求文件的數量(因為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,因為Cache-Control在Header中不顯示為“Cache-Control”,而是顯示為“x-amz-meta-cachecontrol”。 Cloudflare忽略了這一點。

有人有一個簡單的解決方案嗎?

TL; DR:我和這個人有或多或少相同的問題: http//support.bucketexplorer.com/topic734.html (那是在2008年)

編輯:我偶然發現了這一點: 亞馬遜S3沒有緩存圖像,但不幸的是,該解決方案對我不起作用。

編輯2:事實證明它沒有用,因為我使用的是舊版“亞馬遜S3類”。 我更新了,代碼現在正常工作。

感謝您的時間。

如果您正在獲取“x-amz-meta-cachecontrol”,則可能是您沒有正確設置標頭。 它可能就是您在代碼中執行此操作的確切方式。 應該工作。 我推斷這是使用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文檔中, 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()])

您需要將緩存控制設置為請求標頭,但似乎無法使用putObjectFile設置請求標頭,只能設置元標頭。 你必須使用putObject並為元頭提供一個空數組,然后為另一個包含請求頭的數組(包括緩存控制)。

您還可以嘗試下面列出的其他一些工作示例。

也可以看看:

如何使用PHP腳本 (php) 為AWS S3存儲桶中的所有對象設置Expires和Cache-Control標頭

更新Amazon S3和CloudFront的緩存標頭 (python)

自動為整個S3存儲桶設置緩存控制(使用存儲桶策略?)

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

你現在可以。 轉到s3桶。 打開文件並設置屬性

Aws控制台

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM