我一直在試圖擺脫瀏覽器對Rails應用程序所做的重新驗證請求。我打開資產摘要:Rails:即使啓用了資產摘要,瀏覽器也會重新驗證資產
config.assets.digest = true
並希望304的消失。但他們沒有(在資產md5'ed):
Started GET "/assets/bootstrap/bootstrap-4379dca12de4846777a274a301167a41.css" for 192.168.56.1 at Sun Mar 03 00:34:22 +0100 2013
[INFO pid: 3967: 13-03-03 00:34:22 ] Served asset /bootstrap/bootstrap-4379dca12de4846777a274a301167a41.css - 304 Not Modified (5ms)
僅供參考 - 這是在頁面的原始HTML:
<link href="/assets/bootstrap/bootstrap-4379dca12de4846777a274a301167a41.css" media="screen" rel="stylesheet" type="text/css" />
我使用curl檢查緩存頭 - 他們看起來不錯:
< Content-Type: text/css
< Connection: keep-alive
< Status: 200
< X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.11
< ETag: "4379dca12de4846777a274a301167a41"
< X-UA-Compatible: IE=Edge
< Last-Modified: Tue, 26 Feb 2013 08:03:21 GMT
< X-Rack-Cache: miss, store
< X-Content-Digest: 97d1f611b557f55fa917899bca0ef9b674d65a6a
< X-Runtime: 0.023510
< Date: Sat, 02 Mar 2013 23:43:37 GMT
< Content-Length: 141338
< Cache-Control: public, max-age=31536000
< Age: 0
< Server: nginx/1.0.10 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
如果我直接從瀏覽器加載此css URL - 那麼瀏覽器似乎緩存它。 (刷新不會在rails日誌中生成GET)。然而,當我打開我的應用程序頁面 - 它總是發出致使304
重新驗證我與這些設置(真/假,有/無)(幾乎嘗試了所有組合)玩弄周圍(和總是刪除tmp/cache只是爲了安全起見):
config.assets.compile = true
config.static_cache_control = "public, max-age=30758400"
config.serve_static_assets = true
但沒有什麼幫助。我在某處讀過'Etag'標題是問題 - 但我無法弄清楚如何關閉Etag標題(不管我做什麼 - etag標題總是返回)。 (我不明白爲什麼官方配方不能正常工作)。
這是處於開發模式 - 但我已經改變了如上所述的配置設置。沒有預編譯。
任何關於如何關閉重新驗證的幫助非常感謝。