0

この質問を読んだ後、インデックスファイルの先頭にあるURIにアプリケーションのバージョンを追加することで、ブラウザのキャッシュを防ぐことができるかどうか疑問に思いました。

$revision = getRevision();
if($_GET['v'] != $revision){
  header('Location: index.php?v=' . $revision);
}

これは機能しますか?

最終的な目標は、キャッシュ全体をリセットする JavaScript, CSS, imagesことです---更新をプッシュすると、おそらく、素敵な小さな1つのライナー

4

2 に答える 2

1

ページ自体がキャッシュされている場合は、はい。また、サイトの URL を介して利用可能なすべての images/css/js または外部ファイルに対しても実行する必要があります (キャッシュ ヘッダーを渡していると仮定すると、実際にはキャッシュされます)。そのページに含まれているのは、ブラウザは利用可能なすべての URL をキャッシュし、それらを呼び出したページによってグループ化されることはありません。それらはすべて独立しています。したがって、index.php に IMG が含まれている場合、index.php?v=1234 を変更しても IMG はキャッシュから呼び出されます。ページと画像の両方を再取得するには、画像にも ?v=1234 を追加する必要があります。

通常、バージョン システムは、変更可能なすべてのキャッシュ可能な URL (css や js など) に追加するものですが、更新したらすぐに無効にする必要があります。通常、URL に ?VERSION を追加するか、すべての URL に ?version=VERSION を適切な方法で追加します (URL パラメーターを壊さないようにします)。

于 2010-12-18T19:43:55.793 に答える
1

はい、できます。無視されたパラメーターをランダムに追加することは、キャッシングを無効にする古典的な方法です。また、ヘッダーで遊ぶこともできます。実際に時間を遡って設定Cache-control: no-cacheできます。Expires:

于 2010-12-18T19:44:13.003 に答える