web-dev-qa-db-ja.com

特定のWebサイトのクライアントブラウザキャッシュをオフにする方法はありますか?

これはブラウザに依存しない質問ですが、IE9でテストしています。

ユーザーがアクセスするWebアプリの1つがランダムにキャッシュされており、必要なときに変更が表示されません。他のサイトではこの問題は発生しておらず、他のサイトでは発生しないと主張しているベンダーと協力してきました。開発者ツールバーを使用して「サーバーから強制的に更新」を選択すると、すべてが正しく更新されます。

問題を実際に解決する代わりに、この特定のサイトのキャッシュを無効にすることで問題を回避することを考えています。ただし、その方法はわかりません。

9
GollyJer

ブラウザキャッシュを無効にする唯一の適切な方法は、webapp自体からのHTTPヘッダーによるものです。HTTP 1.1 "Cache-Control"ヘッダーだけで、2000年以降のブラウザには十分です。ただし、サーバーをさらに保護するために、サーバーは HTTP 1.1 "Cache-Control"ヘッダーとHTTP 1.0 "Expires"ヘッダーを一緒に の両方を発行できます。

ハックに見えますが、キャッシュの無効化を処理する方法は、サーバーからのURLの「キャッシュ無効化」文字列です。キャッシュバスターは多くの場合タイムスタンプに基づいており、URLを一意にするために各HTMLリンクにクエリ文字列として追加され、1回だけ使用されます。何かのようなもの http://example.org/filename.html?cb=<timestamp+random_value>。これは醜いですし、HTTPヘッダーがそれほどうまく機能しないものは何もしません。しかし、それは限られた対象者(イントラネット上のfx)のハックとして、または適切なHTTPヘッダーと共に保護の追加レイヤーとして使用できます。

AFAIKキャッシュを選択的に無効にする方法はありません単一サイトのみInternet Explorer内から。 (非常に複雑な)解決策の1つは、LANに中間キャッシュとして ワニスキャッシュ をインストールし、HTTPプロキシとしてワニスを使用するようにInternet Explorerを設定し、 ワニスのVCL言語 を使用することです。 =この特定のサイトのみのHTTPヘッダーを書き換えます。

正直なところ、あなたのベンダーはここで間違いを犯していると思います。Fiddler2 for IE 、または Firebug for Firefox をインストールすることをお勧めします、ウェブアプリが送信する実際のHTTPヘッダーを確認します。これを Mark Nottinghamのキャッシングチュートリアル と既に関連付けています-ヘッダーはキャッシングを許可するか、少なくともキャッシングを明示的に禁止しないと思います。

8
Jesper M

適切な有効期限ヘッダーを設定してください。過去の時間を指定すると、コンテンツはキャッシュされません。 IS9が実行されているワークステーションの日時を確認します。参照: http://www.mnot.net/cache_docs/

0

問題のWebサイトのコンテンツを変更できない場合は、プロキシサーバーを使用して、ブラウザーに送信されるコンテンツを変更できます。これにより、有効期限ヘッダーを変更できます。

0
JeffG

WebサイトでHTTPS経由の接続が許可されている場合、ブラウザーによっては、暗号化されたページのキャッシュを無効にすることができます。

IEでは、これはこうして行うことができます:

Internet Options-> Advanced-> Security-> Do not save encrypted pages to diskでIEの設定を再確認できます。

0
JeffG
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

URLバーでランダムなキーを使用することを検討することもできます。これにより、ブラウザ内でのキャッシュも防止されます。

0
Richard