3

最近、サイトに HTTP ヘッダーを追加して、特定の JS/CSS URL に遭遇するたびにサーバーに確認するようブラウザに通知しました。私はそれをテストしましたが、完全に動作します。すべてのブラウザが条件付きGETリクエストを行うようになりました。

ただし、ここに問題があります。人々はまだ古いヘッダーをキャッシュしています。多かれ少なかれブラウザに「これを永久にキャッシュします。わざわざ更新を求めないでください!」と伝えるヘッダー。これは、ハード リフレッシュで無効にすることができます。コードを公開した後、バグのあるページで F5 を押してくださいと、全員に連絡する必要はありません。

HTMLドキュメント自体に「ブラウザ、JS / CSSファイルのヘッダーを無視して、含まれているすべてのファイルの最新バージョンをダウンロードしてください」と言うHTTPヘッダー/ HTMLメタタグはありますか?このページ"?

最終的には、キャッシュをクリアするか、自分で更新することを学ぶ人が増えるにつれて、この問題は自然に解決します。でも、今のうちに直した方がいいと思います。それから約 1 か月後に、HTML レベルのヘッダーを削除して、必要な場所 (リソースごと) にキャッシュを取得します。

編集:リソースの名前を変更したり、クエリパラメーターを追加したりしたくありません。これは私たちが使用していたもの (?v=18、?v=19 など) であり、リソースを更新するたびにその数を増やすのは面倒でした。プログラムでそれを行うことでさえ、理想的な解決策ではありません。特に、サーバーが正しく構成されているためです。HTTP レベルで行う方が理にかなっているので、アクセス方法 (ページに含まれているか、アドレス バーから直接、またはその他の方法) に関係なく機能します。

4

2 に答える 2

1

基本的に唯一の方法は、ブラウザーがキャッシュされた URL を使用しないようにすることです。

1 つの方法は、URL の末尾にキャッシュ無効化のダミー パラメータを使用することです。

some-name.css?q=1

これにより、ブラウザーはそのファイルを強制的にリロードし (その URL がキャッシュにないため)、ダウンロードされたファイルは新しいヘッダーのためにキャッシュされません。ただし、この新しい名前を無期限に使用する必要がある場合があります。これは、ダミー パラメーターを再度オフにすると、キャッシュされたバージョンが引き続き使用される可能性があることを保証できないためです。

もう 1 つの方法は、ファイルの名前を完全に変更することです。

my-new-name.css

于 2012-06-12T19:31:46.863 に答える
1

スクリプトのリロードを強制するスクリプトソースにパラメータを渡します...実際には、バージョンまたは類似のものでそれを行うことができます

<script src="/test/script/myawesomescript.js?ver=1.0&pwn=yes" ...>

それは機能し、他のユーザーには見えません...十分に長いと感じたら、古い方法に戻ります. ただし、ユーザーから強制的に更新したい場合はこれでうまくいきます。

このメソッドは、一部のフレームワークによる Web ページのキャッシュを防止するために使用されます。成功したか教えて

http://css-tricks.com/can-we-prevent-css-caching/ -- これは css の概念へのリンクです (js でも動作するはずです) -- 最大の違いは、絶対にしないようにしたくないことですキャッシュなので、タイムスタンプを使用しないでください。上記のように私のスタイルを使用してください:)お楽しみください!

于 2012-06-12T19:30:35.897 に答える