3

私は使用していますMicrosoft ASP.NET Web Optimization Framework

ご存知かもしれませんが、すべての JS/CSS を 1 つのファイルに連結できます。config で出力ファイル名を定義し、ユーザー ブラウザが更新 JS/CSS を確実に取得できるように、次のようなパラメータを追加できます。v=yUVjELgc9foFnhZgsvMfx2DhVRLKWK-w69IoCVhJ_aM1

リンクは次のようになります。

src="/scripts/js/jquery?v=yUVjELgc9foFnhZgsvMfx2DhVRLKWK-w69IoCVhJ_aM1"

すべてのブラウザーがそのパラメーターをサポートしているわけではなく、キャッシュを更新していないと聞きました。

すべてのブラウザがこのアプローチを使用してキャッシュを更新するか、新しいファイル名を手動で生成する必要があると確信できますか? それをサポートしていないブラウザを見ることができるテーブルはありますか?

ありがとうございました

4

2 に答える 2

6

すべてのブラウザーがそのパラメーターをサポートしているわけではなく、キャッシュを更新していないと聞きました。

ブラウザはそれを「サポート」する必要はありません。

その目的は、URL をスクリプトに変更することです。

URL が異なるため、その URL のリソースはキャッシュされません。

この手法が機能しないためには、ブラウザーに重大なバグ (キャッシュ処理のために特殊なクエリ文字列が含まれる) が必要です。これにより、(たとえば) Google で「kittens」を検索してから「puppies」を検索すると、子犬の検索でキャッシュされた子猫の結果が表示されるため、膨大な量の Web が壊れてしまいます。

于 2013-01-25T13:02:13.293 に答える
0

これまでに見たことのない別の URL を送信する場合、ブラウザーはキャッシュされた応答を使用すべきではないため、ブラウザー間で機能します。これは、それが正しいことを確認できないためです。

RFC-2616

13.1.1 キャッシュの正確性

正しいキャッシュは、要求に適切なキャッシュによって保持されている最新の応答で要求に応答しなければなりません (MUST)。


それでも心配で、標準でより明確に定義されているものに固執したい場合は、それらのファイルを送信するときに、それらのファイルのヘッダーを設定することもできます。Last-Modified

ブラウザは古いバージョンを含むリクエストを送信しIf-Modified-Since、サーバーは 304 Not Modified を返さず、キャッシュされたファイルが使用されないように新しいコピーを返します。

于 2013-01-25T13:05:15.420 に答える