3

私はこのソースコードを読んでいました:

https://github.com/leobalter/PimpMyCode/blob/master/index.html#L20

<script src="js/compiled.min.js?v=125" async></script>

行全体を削除すると、CodeMirror セクションはなくなります。ただし、数値は任意に変更でき、テキストボックスはそのまま残ります。

そのクエリはどのようなもの?v=125ですか?

これを使っている人を見たことがありません。

4

2 に答える 2

7

ブラウザーのキャッシュを破壊します (つまり、ブラウザーがキャッシュされたファイルを識別するために使用するファイルの URL を変更し、クエリ文字列の値が変更されるたびにブラウザーにファイルの再ダウンロードを強制します)。

これは、キャッシュがクリアされるのを待つか手動でクリアするのではなく、更新をファイルに展開し、すべてのユーザーに変更をすぐに取得させたい場合に便利です。

値自体は重要ではありません。出力は変更されず、サーバーはそれを使用しません。ブラウザに新しいバージョンを強制的にダウンロードさせるためだけに存在します。

于 2013-04-22T22:36:20.283 に答える
2

リソースのような静的ファイル.jsは、通常、ブラウザーによって長期間 (1 年間) キャッシュされるように構成されています。キャッシュ内のリソースを使用することで、ユーザーは読み込み時間が大幅に短縮されます。

難問は次のとおりです。ユーザーがキャッシュに私の JavaScript ファイルを持っている場合、更新されたファイルがすべてのユーザーによって一度に使用されることをどのように保証しますか?

クエリ文字列パラメーターを入力します。?v=125識別子であり、おそらく何らかのバージョン番号です。リソースが変更されて解放されると、この番号 (または文字列) は新しい未使用の値に変更されます。リソース名に追加されたパラメータにより、リソースはキャッシュによって真新しいファイルのように処理されます。そのため、ユーザーがキャッシュを持っていscript.jsたりscript.js?v=124、キャッシュに入れていたりしscript.js?v=125ても、最新かつ最高のコードがすべてサーバーから直接読み込まれます。

受け入れられた回答には奇妙なフレーズが含まれています。「ブラウザのキャッシュが壊れる」というのは危険です。これは文字通り起こることではないので大丈夫です。キャッシュは問題ありません。実際、古い?v=124ファイルはまだそこにあります。一意のリソース命名スキームは、無害なキャッシュ ミスを引き起こすだけです。

于 2013-04-22T23:33:56.457 に答える