如何完全禁用Tomcat缓存?

时间:2010-01-28 16:28:25

标签: jsp web-applications tomcat facebook

我目前正在使用的网站遇到问题。

我们正试图让facebook连接评论小部件。每次我们发出以200 OK状态响应的新请求时,窗口小部件都会加载。但是当它返回304 Not Modified时,小部件将不会加载。

这一切都指出了一个缓存问题。我试着改变了context.xml

<Context cachingAllowed="false">

这似乎不起作用。有什么提示吗?

2 个答案:

答案 0 :(得分: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就像HttpServletResponseServletResponse方法的第二个doFilter()参数中回归的那样。

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

答案 1 :(得分:0)

似乎问题是客户端浏览器缓存它,尝试在您的请求中附加一个随机数。比如__rnd__= Math.random()