有的时候浏览器返回操作我们想刷新页面,从服务器重新获取数据,此时就需要浏览器不将浏览记录保存在缓存中。
1. 设置页面为不缓存,访问上一次页面就需要重新去服务器获取。
HTML
<pre>
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="0">
</pre>
JAVA
if (request.getProtocol().compareTo("HTTP/1.0") == 0){
response.setHeader("Pragma","no-cache");
}else if (request.getProtocol().compareTo("HTTP/1.1") == 0){
response.setHeader("Cache-Control","no-cache");
}
PHP
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
ASP
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
JSP
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-store");
%>
我在实践中发现,如果只是按照上面的做,当使用浏览器上默认的返回时并不能让浏览器刷新,还需要使用js控制
if(window.name!="hasLoad"){
location.reload();
window.name = "hasLoad";
}else{
window.name="";
}
由于window.name在浏览器刷新后会仍然保存,所以可以用window.name来判断页面是否已经刷新过.