Apacheのhttpdのでは、どのように私は与えられたのUserAgentのためのキャッシュを構成しないのですか?
-
09-09-2019 - |
質問
私は、Apache HTTPDは、ほとんどの静的コンテンツの要求にキャッシュヘッダを追加するように設定されています
ExpiresActive On
ExpiresDefault "access plus 1 year"
# Force JNLP and BSH files to expire immediately so updates are checked for
# and seen (We need this so we see changes in the dynamic content in both)
ExpiresByType application/x-java-jnlp-file "now"
ExpiresByType application/x-bsh "now"
どのように私はUserAgent
は、文字列のJNLPを含むすべてのリクエストに対して、このキャッシュを無効にすることができますか?要求は、ユーザエージェントJNLP(例えば「User-Agent: JNLP/6.0 javaws/1.6.0_12 (b04) Java/1.6.0_12
」)から来ているとき、私はHTTPレスポンスののいずれかののCache-Control
または他のキャッシュ関連のヘッダーを望んでいない。
私は、ユーザーエージェントに基づいていくつかの設定例を見つけることができますが、私は、ユーザーエージェントに応じてキャッシュを設定する方法を見つけ出すことはできません。
解決
あなたのExpiresByType
ディレクティブは良いアイデアのように見える...それが十分でない場合は、BrowserMatch
を使用してみます:
BrowserMatch JNLP ua_is_jnlp
これはユーザエージェントヘッダは(大文字小文字を区別しない変異体、ua_is_jnlp
もある)文字列JNLP
を含むすべての要求のためのいくつかの値に環境変数BrowserMatchNoCase
を設定します。そして、あなたが任意のキャッシングヘッダをクリアすることができます。
Header unset Cache-Control env=ua_in_jnlp
Header unset Expires env=ua_in_jnlp
あなたが完全にキャッシュを無効にしたい場合は、あなたが設定したほうが良いと思いますが、
Header set Cache-Control no-cache env=ua_in_jnlp
Header set Expires 0 env=ua_in_jnlp
所属していません StackOverflow