web-dev-qa-db-ja.com

プロキシサーバーがWebサイトの特定のURLをキャッシュしないようにApacheを構成するにはどうすればよいですか?

Apacheサーバーでホストされているclickonceリポジトリがあります。明らかな理由*で、このリポジトリをプロキシサーバーにキャッシュされたくありません。

プロキシが必要に応じて何かをキャッシュするのを防ぐ方法はないことは知っていますが、プロキシにURLをキャッシュしないようにヒントを与えるか、「廃止日」を提供する方法を探しています。

Apacheでそれを行う方法はありますか?そうでない場合は、別のWebサーバー(IIS)でそれを行うことは可能ですか?

特定のプロキシベンダーでのみ機能するオプションがある場合は、それらにも興味があります。


**リポジトリがキャッシュされている場合、ソフトウェアは、サーバー上にある「実際の」最新バージョンに対して自身をチェックするのではなく、「最新バージョン」(プロキシによって保持されている)の廃止されたコピーに対してそのバージョンをチェックします。

2
Brann

これはApacheで行うのは非常に簡単です。たとえば、サーバーからの何もキャッシュされるべきではないever、これを試してください

<Location / >
   ExpiresActive On
   ExpiresDefault "now"
</Location>

おそらくこれを正確に行いたくないので、 mod_expiresのドキュメント を見て、必要に応じてこれをカスタマイズしてください。

また、このシナリオでは、ブラウザとプロキシは同じように扱われることに注意してください。キャッシュを無効にする応答とともに期限切れヘッダーを送信することにより、訪問者へのアクセスが遅くなることは言うまでもなく、サイトの実行にかなりの負荷とコストが追加されます。

7
Dave Cheney

WAN Accelerator)のようなある種のキャッシュエンジンについて話していて、問題のデバイスが独特のUserAgentをリクエストに添付している場合は、幸運です。この場合、次のようなルールを設定できます。ここで、SomeStringは、キャッシュエンジンのユーザーエージェントと一致する文字列です。

BrowserMatch SomeString no-cache-headers
Header set Cache-Control "no-cache, must-revalidate"    env=no-cache-headers
Header set Pragma        "no-cache"                     env=no-cache-headers
Header set Expires       "Sat, 1 Jan 2000 00:00:00 GMT" env=no-cache-headers

ここでは、「Expires」ヘッダーを過去の任意の日付に設定しました。

リクエストを転送するだけで、それ自体ではリクエストを行わないプロキシについて話している場合、できることは、これらのオブジェクトのすべてのキャッシュを防ぐか、(もう少し良い)これらの有効期間を短く設定することです。オブジェクト。あなたはこのようなものでそれを行うことができます:

ExpiresActive On
ExpiresDefault "access plus 1 hour"

あなたが望む時間を選ぶことができる場所。または、有効期限のデフォルトとして「アクセス」を指定することもできます。これは、次のリクエストで新しいオブジェクトを取得する必要があることを意味します。しかし、ここでは、他の人が指摘しているように、ブラウザにもペナルティを課しています。

2
Eddie

HTMLページに「Expires」メタタグを設定するか、Apache /その他のサーバーを介して1つまたは複数のヘッダーを設定することができます。ここにいくつか 本当に良い情報 主題について。

これが IISでASP)を使用してそれを行う方法 です。

ヘッダーを使用すると、基本的にmax-ageをたとえば1秒に設定し、no-cacheno-store、およびmust-revalidateヘッダー、適切な測定のために、いくつかの誤動作/バギープロキシがあり、この方法ですべてのベースをカバーするようにします。

1
Ivan

Apacheでは、 mod_expires を調べる必要があります。ほとんどのプロキシは、max-ageなどとともにExpiresHTTPヘッダーを尊重します。

0
Michael Gorsuch