2009-02-27 3 views
1

私はほとんどの静的コンテンツの要求にキャッシュヘッダを追加するようにApache HTTPDを設定している:Apache httpdでは、特定のUserAgentのキャッシュを設定しないでください。

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")、私はのいずれかを返すことはしません。Cache-Controlまたはその他のキャッシュ関連のヘッダがHTTPレスポンスにあります。

ユーザエージェントに基づいていくつかの設定例がありますが、ユーザエージェントに応じてキャッシングを設定する方法がわかりません。

答えて

4

あなたExpiresByTypeディレクティブは良いアイデアのように見える...それが十分でない場合は、BrowserMatchを使用してみてください:

BrowserMatch JNLP ua_is_jnlp 

これは、ユーザーエージェントヘッダーが含まれているすべての要求のためのいくつかの値に環境変数ua_is_jnlpを設定し、文字列JNLP(大文字と小文字を区別しないバリアント、BrowserMatchNoCaseもあります)。あなたが完全にキャッシュを無効にしたい場合は、あなたが

Header set Cache-Control no-cache env=ua_in_jnlp 
Header set Expires 0 env=ua_in_jnlp 
+0

感謝を設定したほうが良いと思いますが、その後、あなたは

Header unset Cache-Control env=ua_in_jnlp Header unset Expires env=ua_in_jnlp 

で任意のキャッシングヘッダをクリアすることができます。これはまさに私が探していたものです。私はあなたのポストの直前にそれを見つけましたが、あなたのポストを見て、あなたに「正解」チェックマークを与え、私のポストを削除しました。 – Eddie

関連する問題