1

我已将 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

我可以找到基于用户代理的几件事的配置示例,但我无法弄清楚如何根据用户代理配置缓存。

4

1 回答 1

4

您的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
于 2009-02-27T21:41:38.717 回答