jsp - 如何完全禁用 Tomcat 缓存?

标签 jsp web-applications tomcat facebook

我在使用我当前正在处理的网站时遇到问题。

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

这一切都指向一个缓存问题。我尝试更改 context.xml

<Context cachingAllowed="false">

这似乎没有用。有什么建议吗?

最佳答案

This did not seem to work. Any tips?

cachingAllowed 属性实际上 配置服务器端缓存,而不是您所期望的客户端缓存。

客户端缓存将通过适当的响应 header 来完成。要完全禁用特定资源的客户端缓存,您需要创建一个 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.

顺便说一句,响应 在这里 HttpServletResponse这是从 doFilter() 方法的第二个 ServletResponse 参数转换回来的。

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

关于jsp - 如何完全禁用 Tomcat 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156077/

相关文章:

java - 将通知从 Java servlet 发送到 HTML 页面

java - Struts有什么好处

tomcat - Web 服务器防火墙访问和浏览器不安全内容警告

Java Web应用程序: How can I show system time generated at client side in the report

oracle - 如何在 tomcat 中为 oracle 连接设置默认预取行大小

jsp - JSP 中是否有类似 isset 的函数?

java - Struts - <html :errors/> to display error messages in Jsp? 的替代方案

java - 在 Spring 表单中使用 AJAX 调用

java - 使用 c 迭代哈希表 vector :forEach

javascript - dojox 图表的自定义主题