清理浏览器缓存

时间:2010-10-08 19:03:57

标签: java jsp caching

我在编写Java App。并得到一个错误,因为浏览器没有连接到服务器来获取新值,只是从缓存中重新定义... 我做了这样的事情:

<% if(request.getAttribute("msg")!=null)
    out.println("alert("+request.getAttribute("msg")+")");
%>

它运行正常,但是当我点击一个链接然后点击浏览器中的BACK按钮它就不会调用服务器...我在Java上尝试过类似:response.setHeader("Pragma", "No-Cache");的东西 和html上的<meta http-equiv="expires" content="no-cache">,但没有什么能让它发挥作用...... 有人有建议吗?

2 个答案:

答案 0 :(得分:1)

确保您的浏览器设置为每次访问网站时都要求新页面。您可能还希望添加一个额外的参数来请求,如时间戳,以便它始终看起来像是对服务器的新请求。

答案 1 :(得分:0)

您确实需要通过设置相应的响应标头来指示Web浏览器不缓存响应。正确的响应标头集是:

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.

您希望在Filter类中执行此操作,该类映射到感兴趣的url-pattern,例如*.jsp而不是在所有JSP页面上对其进行复制。

另见:

PS:在测试之前不要忘记清除浏览器缓存,旧页面可能仍在那里;)