现在的位置: 首页 > 综合 > 正文

浏览器缓存url请求

2018年08月18日 ⁄ 综合 ⁄ 共 1379字 ⁄ 字号 评论关闭

最近遇到浏览器缓存url的问题,google了一把,学到不少东西,结合网上其他人文章拼凑一篇,供大家交流。 
    
一 防止url被浏览器缓存 
根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。 所以浏览器会对GET请求做缓存处理。 

解决办法: 

1. GET请求URL后加随机数,让服务器认为不是相同的请求。 
例 “http://www.example.com/index.php?class=aitcle&page=5&_t=” + new Date().getTime() 
2. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“If-Modified-Since”,”0″) 
3. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”); 
4. 服务端响应请求时加 header(“Cache-Control: no-cache, must-revalidate”); (PHP) 
5. 使用POST代替GET,浏览器不会对POST做缓存 


二.防止jsp页面内容被缓存: 
    防止JSP页面缓存为了防止浏览器缓存当前访问的JSP动态页面,可以采用如下的方式进行设置: 
<% 
// 将过期日期设置为一个过去时间 
response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT"); 
// 设置 HTTP/1.1 no-cache 头 
response.setHeader("Cache-Control", "no-store,no-cache,must-revalidate"); 
// 设置 IE 扩展 HTTP/1.1 no-cache headers, 用户自己添加 
response.addHeader("Cache-Control", "post-check=0, pre-check=0"); 
// 设置标准 HTTP/1.0 no-cache header. 
response.setHeader("Pragma", "no-cache"); 
%> 

三.防止html页面被缓存(jsp也适用) 
     禁止客户端缓存要在<head>中加入类似如下内容: 
<META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> 
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"> 
或 
<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="cache-control" content="no-cache"> 

<meta http-equiv="expires" content="0">  


转载于:http://java-xp.iteye.com/blog/1518510

抱歉!评论已关闭.