2010-01-28 118 views
5

我遇到了当前正在处理的网站的问题。如何完全禁用Tomcat缓存?

我们正在尝试使Facebook连接评论部件。每当我们发出一个响应200 OK状态的新请求时,这个小部件就会加载。但是当它返回一个304 Not Modified时,这个小部件将不会加载。

这一切都指出了缓存问题。我尝试了changin context.xml

<Context cachingAllowed="false"> 

这似乎没有工作。有小费吗?

回答

0

看来问题出在客户端浏览器缓存它,请尝试追加一个随机数到您的请求。像__rnd__= Math.random()

15

这似乎没有工作。有小费吗?

cachingAllowed属性实际上配置服务器端缓存,没有你似乎期望的客户端缓存。

客户端缓存将通过适当的响应头来完成。要完全禁止对特定资源的客户端缓存,你需要创建一个Filter监听所需url-pattern,并至少具有doFilter()方法内以下行:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); // Proxies. 

response在这里顺便说一下HttpServletResponse这是从doFilter()方法的第二个参数铸造出来的。

不要忘记清除客户端缓存(因此,在webbrowser配置里面)之前测试这一切:)