在我的网络应用程序中,由于浏览器缓存存在一些问题。
如何在加载jsp页面时清除浏览器缓存?
如何在jsp页面中包含清除缓存代码?
答案 0 :(得分:16)
您可以在JSP中以prevent from caching
的方式执行此操作,无法以编程方式清除缓存:
<% response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
答案 1 :(得分:2)
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
%>
在jsp中完美工作,记得检查会话
<%
User u = (User) request.getSession().getAttribute("user");
if (u != null ) {
//show page
}else{
// redirect to login page
}
%>
答案 2 :(得分:0)
<%
response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.addHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
%>
这对我有用。 Reference
答案 3 :(得分:0)
如何为特定的JSP禁用浏览器缓存? 可以防止浏览器缓存JSP页面响应。添加到响应标头中的以下提示似乎可以防止大多数现代浏览器在“命中”相同的URL时将页面从缓存中拉出:
<%
response.setHeader( "Pragma", "no-cache" );
response.setHeader( "Cache-Control", "no-cache" );
response.setDateHeader( "Expires", 0 );
%>
使用HTML标头中的meta标签可以达到相同的效果:
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">
答案 4 :(得分:-1)
通过在HTML标题中使用元标记可以实现相同的效果:
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Sat, 01 Dec 2012 00:00:00 GMT">
Cache-Control标头已添加到HTTP 1.1中,而其他两个标头也存在于HTTP 1.0中。