53

Glassfish サーバーで Chrome がリソースをキャッシュする際に問題が発生しています。Last-Modified ヘッダーが存在するにもかかわらず、expires ヘッダーと no-cache ヘッダーは送信されず、リソース (約 4 MB の SWF ファイル) が Chrome によってキャッシュされます。

Chrome が 304 コードを取得する場合もあれば、(キャッシュから) 単純に 200 を取得する場合もあります。私は 304 を理解しています -- Chrome はおそらく最新の Last-Modified 日付とキャッシュされたバージョンをチェックして決定しています。しかし、それ以外の場合は (キャッシュから) 200 を実行します。この場合、ヘッダー情報は返されず、Chrome はファイルがチェックされるのではなく、変更されていないと想定しているように見えます。

Google 自身のサイトには、次のように記載されています。

HTTP/S は、ブラウザによる静的リソースのローカル キャッシュをサポートしています。一部の最新のブラウザー (IE 7、Chrome など) では、ヒューリスティックを使用して、明示的なキャッシュ ヘッダーを持たないすべてのリソースをキャッシュする期間を決定します。

しかし、これは決定的な答えを提供しません。このヒューリスティックはどこかで公開されていますか? 決まった答え (30 日など) はないかもしれませんが、いくつかの一般的なガイドラインが役立ちます。さらに、Last-Modified が設定されている場合、なぜ Chrome が最初にそれをチェックしないのかわかりません。

4

2 に答える 2

13

DEFAULT_CACHE_TIME = 300

http://code.google.com/p/chromium/source/search?q=DEFAULT_CACHE_TIME&origq=DEFAULT_CACHE_TIME&btnG=Search+Trunkで「DEFAULT_CACHE_TIME」を 検索して上記を見つけました。

DEFAULT_CACHE_TIME を含む「chromeextensionsdocs.py」というファイルがあります。

http://code.google.com/appengine/docs/python/memcache/overview.htmlにある例に基づいて、これは数秒だと思います。「 chromeextensionsdocs.py 」では、DEFAULT_CACHE_TIME が
memcache.add

これが正しい値であるかどうかは完全にはわかりませんが、ピースを組み合わせるとそうなる可能性が高いようです.

于 2012-03-16T16:48:48.043 に答える