2013-03-03 20 views
0

我一直在試圖擺脫瀏覽器對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標題總是返回)。 (我不明白爲什麼官方配方不能正常工作)。

這是處於開發模式 - 但我已經改變了如上所述的配置設置。沒有預編譯。

任何關於如何關閉重新驗證的幫助非常感謝。

回答