与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