Cache-Control 在 AWS S3 對像元數據中不起作用
我最初的問題的後續行動:來自 AWS CloudFront 和 S3 Origin 的文件沒有記憶體控制標頭
我使用 AWS CloudFront 以 AWS S3 作為源來提供靜態文件。我嘗試使用 AWS Web 控制台為我的對象設置 Cache-Control 標頭,如我原始問題(上面的連結)中的答案中所述。當我使用 AWS S3 連結訪問文件時,我已經可以看到我添加的標題: Cache-Control: public, max-age=31536000。
問題是瀏覽器不尊重標題。當我重新載入/刷新同一個連結時,我得到一個304 - Not Modified響應而不是**200(記憶體)**響應。
我還嘗試了值max-age=300(沒有Public),還嘗試了**" “中的值,但我總是得到 304 響應。我還嘗試從 S3添加Expires標頭,但結果相同。**
如何讓瀏覽器尊重記憶體標頭?我想利用瀏覽器記憶體並節省使用 AWS 的成本。
附加說明:我的 S3 儲存桶未設置為靜態網站託管。以防萬一這與此有關。
編輯:以下是實時 HTTP 標頭
https://cdn.example.com/path/logo.png GET /path/logo.png HTTP/1.1 Host: cdn.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://www.example.com/ Connection: keep-alive If-Modified-Since: Tue, 12 Apr 2016 10:29:24 GMT If-None-Match: "xxxxxxxxxxxxxxxxxxxxxxxxxxx" HTTP/1.1 304 Not Modified Connection: keep-alive Date: Sat, 16 Apr 2016 09:33:08 GMT Etag: "xxxxxxxxxxxxxxxxxxxxxxx" Server: AmazonS3 Age: 67885 X-Cache: Hit from cloudfront Via: 1.1 xxxxxxxxxxxxxxx.cloudfront.net (CloudFront) X-Amz-Cf-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxx==
編輯:如果我重新載入,我會收到200響應,如果我在地址欄 URL 上按 Enter,我會收到**304 Not Modified 。此外,同一頁面載入中的 Google 資產會以200(來自記憶體)**而不是 304 響應。
更新:
目前檢測文件已被記憶體的線上測試。在http://www.webpagetest.org/和http://tools.pingdom.com/上進行了測試。也與穀歌頁面速度。我認為將文件分發到邊緣位置需要時間。這很奇怪,因為我每次編輯都會更改文件名,以便立即發生更改。但就記憶體而言,將記憶體分發到邊緣位置可能需要時間。還在做一些更多的測試。
200 是 ok 響應,表示伺服器已經發送了請求的資源。304 not modified 表示對像在瀏覽器記憶體中,瀏覽器已檢查。
如果您點擊了重新載入,您可能會遇到瀏覽器問題,而不是伺服器問題。您已經告訴它重新載入,所以它會轉到伺服器。嘗試通過進入 URL 並點擊“輸入”而不是“重新載入”來載入該資源。
試試 Firefox 的“live http headers”外掛,它顯示了正在發生的事情。
根據您所說的,我認為實際上沒有問題,但是您需要發布 Live HTTP Headers 的輸出以確保我們確定。如果你這樣做,不要只使用一個資源,載入一個靜態 html 頁面並讓它引用 CDN 上的 jpg。