簡體   English   中英

expires_in最大年齡緩存控制不起作用

[英]expires_in max-age cache control doesn't work

我無法使最大使用期限的緩存控件正常工作,我使用了expires_in導致出現“ Cache-Control:max-age = 86400,public,必須重新驗證”標頭。

但是,瀏覽器仍然會將請求發送到服務器,至少將其定義為“ 304未經修改”,這意味着ETag / If-None-Match標頭可以正常工作。

我已經在本地主機和Heroku上使用chrome 45和Safari上的webrick對其進行了測試。

不,我的開發工具未打開,並且未選中“禁用緩存”。

我還嘗試刪除了expires_in方法調用中的“,must_revalidate:true”。

我想念什么?

這是來自chrome的網絡輸出: 常規:遠程地址:127.0.0.1:3000請求URL: http ://localtest.me:3000/ api/books請求方法:GET狀態碼:304未修改

響應標題: Access-Control-Allow-Origin:* Access-Control-Request-Method:* Cache-Control:max-age = 86400,公共,必須重新驗證連接:Keep-Alive日期:星期二,2015年9月8日13: 28:01 GMT Etag:W /“ 1f1b2d0b822830bc74e7c47a116205be”服務器:WEBrick / 1.3.1(Ruby / 2.2.1 / 2015-02-26)X-Content-Type-Options:nosniff X-Frame-Options:SAMEORIGIN X-Request -Id:c70d4715-dcff-4558-85af-9d21556d406a X運行時:0.553353 X-Xss保護:1; 模式=塊

請求標頭: Accept:text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp, / ; q = 0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:zh-CN,en ; q = 0.8,fr; q = 0.6,he; q = 0.4緩存控制:max-age = 0連接:保持活動狀態主機:localtest.me:3000 If-None-Match:W /“ 1f1b2d0b822830bc74e7c47a116205be”升級-不安全請求:1用戶代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_10_3)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 45.0.2454.85 Safari / 537.36

這是紅寶石代碼:

before_action :cache_control, only: [:index, :show]
def cache_control
  expires_in 1.day, public: true, must_revalidate: true
end

好吧,標題很好,這只是瀏覽器如何對待重新加載按鈕或快捷鍵的度量。

我在這里找到了答案: https : //stackoverflow.com/a/16510707/789658

這是chrome中的發現:

  1. 在地址欄上按Enter鍵將遵守“最大使用期限”, 並且不會向服務器發送請求。
  2. 重新加載按鈕或Cmd + R使用If-Modified-Since向服務器發送請求, 如果由於以下原因未修改資源,則將返回304:
  3. Cmd + Shift + R 甚至沒有If-Modified-Since就將請求發送到服務器

暫無
暫無

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

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