1

http://chesseng.herokuapp.com/の heroku でアプリを実行しています。Chrome でキャッシュを無効にしてページにアクセスすると、次のような application-fingerprint.css の応答ヘッダーが返されます。

Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/css
Date:Wed, 17 Oct 2012 00:17:19 GMT
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT
Status:200 OK
transfer-encoding:chunked
Vary:Accept-Encoding
X-Rack-Cache:miss

ただし、ローカル インスタンスを起動してrails s -e productionアクセスすると、application-fingerprint.css の応答ヘッダーは次のようになります。

Age:5119
Cache-Control:public, max-age=31536000
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:95828
Content-Type:application/javascript
Date:Tue, 16 Oct 2012 23:01:27 GMT
Etag:"0bf9e9837d421c2e28be1ef4f0794a48"
Last-Modified:Tue, 16 Oct 2012 01:07:17 GMT
Server:WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20)
Vary:Accept-Encoding
X-Content-Digest:add442e2036c1e6e9f4860dcc44496582a5c91b1
X-Rack-Cache:fresh
X-Request-Id:b89de17e397ac7b60acfe500e8d15df9
X-Runtime:0.001632
X-Ua-Compatible:IE=Edge,chrome=1

Cache-Control や Etag などのキャッシング関連のフィールドが heroku と大きく異なるのはなぜですか? おそらく、heroku に Cache-Control:public, max-age=31536000 を返してもらいたいと考えています。Cache-Control:public, max-age=31536000しかし、まずローカル プロダクション モードで が設定されている理由を理解する必要があります。config.static_cache_control = "public, max-age=3600"プロダクションでローカルサーバーを設定しconfig/environments/production.rbて起動すると、それでも返さmax-age=31536000れて無視されるように見えるため、不可解ですmax-age=3600

4

1 に答える 1

0

ヘッダーから、キャッシング ヘッダーに影響を与えるラック キャッシュ ミドルウェアX-Rack-Cacheを使用しているように見えます。ローカルではリソースがキャッシュにあるため ( )、Heroku ではそうではありません ( )。それが違いを説明します。X-Rack-Cache:freshX-Rack-Cache:miss

ミドルウェア スタックからラック キャッシュを削除してみて、違いがなくなるかどうかを確認してください。

于 2012-10-17T02:56:53.493 に答える