我無法讓max-age緩存控制正常工作, 我使用expires_in導致「Cache-Control:max-age = 86400,public,必須重新驗證「標題。expires_in max-age緩存控制不起作用
但是,瀏覽器仍然向服務器發送請求,至少它被定義爲「304未修改」,這意味着ETag/If-None-Match標頭能正常工作。
我用我的本地主機上的webrick和heroku上的webrick進行了測試,用Chrome 45和Safari對 進行了測試。
不,我的開發工具沒有打開,並且「禁用緩存」未被選中。
我也嘗試刪除expires_in方法調用的「,must_revalidate:true」。
我錯過了什麼?
這裏是從網絡中鉻的輸出: 一般: 遠程地址:127.0.0.1:3000 請求URL:http://localtest.me:3000/api/books 請求方法:GET 狀態代碼:304未修改
響應頭文件: 訪問控制允許來源:* 訪問控制請求方法:* 緩存控制:max-age = 86400,公共,必須重新驗證 連接:保持活動 日期:2015年9月8日星期二13:28:01 GMT Etag:W /「1f1b2d0b822830bc74e7c47a116205be」 服務器:WEBrick/1.3.1(Ruby/2.2.1/2015-02-26) X-Content-Type-選項:nosniff X-Frame-Options:SAMEORIGIN X-Request-Id:c70d4715-dcff-4558-85af-9d21556d406a X-Runtime:0.553353 X-Xss-Protection:1;模式=塊
請求報頭: 接受:text/html的,應用/ XHTML + xml的,應用/ XML; Q = 0.9,圖像/ WEBP,/; Q = 0.8 接受編碼:gzip ,deflate,sdch Accept-Language:zh-CN,en; q = 0.8,fr; q = 0.6,he; q = 0.4 Cache-Control:max-age = 0 連接:保持活動 主機:localtest .me:3000 User-Agent:Mozilla/5.0(Macintosh; Intel Mac OS X 10_10_3)AppleWebKit/537.36(KHTML,和Gecko一樣)如果無匹配:W /「1f1b2d0b822830bc74e7c47a116205be」 升級 - 不安全 - 請求:1 Chrome/45.0.2454.85 Safari/537 0.36
這裏是Ruby代碼:
before_action :cache_control, only: [:index, :show]
def cache_control
expires_in 1.day, public: true, must_revalidate: true
end