使用ApacheHTTPD,如何为给定的UserAgent配置无缓存?

使用ApacheHTTPD,如何为给定的UserAgent配置无缓存?,apache,configuration,caching,user-agent,Apache,Configuration,Caching,User Agent,我已将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) ExpiresBy

我已将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(例如“
用户代理:JNLP/6.0 javaws/1.6.0_12(b04)Java/1.6.0_12
”)时,我不希望HTTP响应上有任何
缓存控制或其他与缓存相关的头


我可以找到一些基于用户代理的配置示例,但我无法确定如何根据用户代理配置缓存。

您的
ExpiresByType
指令看起来是个好主意。。。如果这还不够,请尝试使用
BrowserMatch

BrowserMatch JNLP ua_is_jnlp
对于其用户代理头包含字符串
jnlp
(还有一个不区分大小写的变量,
BrowserMatchNoCase
)的任何请求,这会将环境变量
ua\u is\u jnlp
设置为某个值。然后可以使用清除任何缓存头

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

您的
ExpiresByType
指令看起来是个好主意。。。如果这还不够,请尝试使用
BrowserMatch

BrowserMatch JNLP ua_is_jnlp
对于其用户代理头包含字符串
jnlp
(还有一个不区分大小写的变量,
BrowserMatchNoCase
)的任何请求,这会将环境变量
ua\u is\u jnlp
设置为某个值。然后可以使用清除任何缓存头

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

谢谢这正是我想要的。我在你发帖子之前就想出来了,但后来看到了你的帖子,给了你“正确答案”复选标记,并删除了我的帖子。谢谢。这正是我想要的。我在你发帖子之前就想出来了,但后来看到了你的帖子,给了你“正确答案”复选标记,并删除了我的帖子。