Railsアプリのブラウザーからの再検証リクエストを削除しようとしています。アセットダイジェストをオンにしました:
config.assets.digest = true
そして304がなくなることを望んでいました。しかし、そうではありません(アセットはmd5されています):
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)
このcssURLをブラウザから直接ロードすると、ブラウザはそれをキャッシュしているように見えます。(更新では、レールログにGETは生成されません)。ただし、アプリケーションページをロードすると、常に再検証が発行され、304になります。
私はこれらの設定(true / false、存在/不在)をいじくり回しました(ほとんどすべての組み合わせを試しました)(そして安全に再生するために常にtmp / cacheを削除します):
config.assets.compile = true
config.static_cache_control = "public, max-age=30758400"
config.serve_static_assets = true
しかし、何も助けにはなりませんでした。'Etag'ヘッダーが問題であるとどこかで読んだことがありますが、Etagヘッダーをオフにする方法がわかりません(何をしても、etagヘッダーは常に返されます)。(そして、なぜ公式レシピがうまくいかないのか理解できません)。
これは開発モードですが、上記のように構成設定を変更しました。プリコンパイルはありません。
再検証をオフにする方法についてのヘルプは大歓迎です。