[英]Does CloudFront make use of Cache-Control headers in error responses (e.g. 503) from the origin?
[英]Can't make CloudFront supply cache-control headers
我已經對此進行了大量閱讀,但我所看到的解決方案似乎都不適用於 IIS 網站 - 大多數似乎建議了一些服務器端解決方案,但沒有一個對我有用。
我正在優化我們的一個網站,PageSpeed、YSlow 和 Lighthouse 都抱怨我從 CloudFront CDN 提供的圖像沒有任何緩存標頭。 CDN 從 S3 存儲桶提供服務。
例如https://static.edie.net/webimages/new_new_new.png (未指定到期時間)
出現“有沒有遠期到期日期的靜態組件”和“利用瀏覽器緩存以獲取以下可緩存資源”
我一生都無法弄清楚如何讓 CloudFront 為這樣的圖像提供緩存標頭。
我已經設定
Cache-Control: max-age=5500000
在 s3 存儲桶/文件本身上,如果您通過存儲桶檢查文件: https : //devedienet.s3.amazonaws.com/webimages/new_new.png那么它存在緩存標頭。
但這似乎不會影響 CloudFront 圖像,它只有這些標頭:
Age: 12153
Connection: keep-alive
Date: Mon, 22 Oct 2018 11:18:49 GMT
ETag: "940fd4d68428cf3e4f88a45aab4d7157"
Server: AmazonS3
Via: 1.1 4f95eb10423b781564e79d7c85f85795.cloudfront.net (CloudFront)
X-Amz-Cf-Id: TZAWy8U12-ohhe-dwTkCLqXHbJKI7CJqQd21I-lvq-8rloZjTew6aw==
x-amz-meta-s3b-last-modified: 20181017T105350Z
X-Cache: Hit from cloudfront
我已經嘗試將自定義行為添加到 CloudFront 分配的 AWS 控制面板中:
webimages/*.png
Minimum TTL: 5500000
但這又似乎沒有效果。
請注意,在添加上面的新規則后,我使文件夾中的所有圖像無效,但沒有骰子。
我是否遺漏了什么或誤解了需要什么?
我遇到了類似的問題,因此在進行了一些閱讀和試驗后,我發現 Cloudfront 的最小 TTL、最大 TTL、默認 TTL 的對象緩存值沒有在資源的響應標頭中明確添加緩存控制標頭如果資源在服務器級別沒有一個。 其次,即使資源在 S3 中添加了MinTTL < s3 Cache < Max TTL
控制元數據,它也應該介於MinTTL < s3 Cache < Max TTL
。 對象緩存值指出,對於提供的值,資源將在邊緣位置緩存那么長時間,並且不會在資源的響應標頭中添加緩存控制。 我所做的是創建一個 Lambda 函數,並通過更新查看器響應的緩存行為設置將其添加到 Lambda 關聯下。 這是我的 Lambda fn。 這在請求的資源中添加了 Cache-Control 標頭。
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
const headers = response.headers;
const headerCache = 'Cache-Control';
headers[headerCache.toLowerCase()] = [{
key: headerCache,
value: 'max-age=1096000'
}];
callback(null, response);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.