参考:

http://bbs.csdn.net/topics/330028896  浏览器缓存机制

http://www.docin.com/p-591569918.html  浏览器缓存的一些问题的处理方法

部分浏览器缓存问题的解决方案

1.GET请求缓存处理,不想要缓存GET请求?

浏览器会缓存GET请求,不会缓存POST请求,因此解决为:

方法1:GET请求URL后加随机数,让服务器认为是不同的请求,如:"http://www.example.com/index.jsp?class=articele&page=5&t"+new Date().getTime();

方法2:在ajax发送请求前加上xmlHttpRequest.setRequestHeader("If-modified-since","0");

方法3:在ajax发送请求前加上xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");

方法4:若为jquery ajax, 设置ajax属性cache:false;(注意:cache属性对post没有用,对get才有用)

方法5:在服务器端响应请求时加上response.setHeader("Cache-Control","no-cache,must-revalidate");

方法6:使用POST代替GET,浏览器不会对POST做缓存

注意:为什么cache属性对post没有用,对get才有用?

因为1.浏览器缓存url请求原理就是判断url是否相同,url相同则读取缓存,url不相同则读取服务器

2.使用GET方式提交url类似"http://www.example.com/index.jsp?class=articele&page=5“,而POST方式提交url类似http://www.example.com/index.jsp,参数是在请求  head里的,不在url上,请求参数url始终相同

3.jquery ajax GET方式提交: data: "t=" + new Date().getTime(),  或者 data:{"t": new Date().getTime()}或者cash:false都是在请求后面加上不同的参数,cach:false会启动 生成参数附加在url请求里,因此浏览器认为是不同的请求,就重新请求服务器。

2.防止JSP动态页面内容被缓存?

方法:在JSP页面里 头部

<%
response.setHeader("expires","sat,6 May 1995 12:00:00 GMT");//将expire时间设置为一个过去时间或0,-1等
response.setHeader("cache-control","no-store,no-cache,must-revalidadate");//设置HTTP/1.1 cache-control头
response.addHeader("cache-control", "post-check=0,pre-check=0");//设置IE 扩展HTTP/1.1 no-cache header
response.setHeader("Pragma", "no-cache");//设置标准HTTP/1.0 no-cache header
%>

2.防止html页面被缓存?(jsp也适用)

方法:html页面里

注意:

1.若在jsp页面里"<%response%>"添加页面过期 + "<meta http-equiv>"添加不过期,则页面过期.

2.若在jsp页面里"<%response%>"添加页面不过期 + "<meta http-equiv>"添加过期,则页面不过期.

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

3.cache-control参数说明:

a.max-age=""指示客户机可以接受生存期小于指定时间的响应,以s为单位,在max-age规定的秒数内,浏览器将不会发送对应的请求到服务器,数据由缓存直接返回,超过这一时间段才进一步由服务器决定是返回新数据还是仍由缓存提供。

b.public 指示响应可被任何缓存区缓存;

c.private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理,这允许服务器描述当用户的部分响应效益,此响应消息对于其他用户的请求无效;

d.no-cache 指示请求或响应消息不能缓存;

e.no-store用于防止重要的信息被无意发布,在请求消息中发送将使得请求和响应消息都不缓存;

f.min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应;当前时间加上指定时间内,浏览器不会发送消息到服务器

g.max-stale:指示客户机可以接收超出超时期间的响应消息,如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

PS:仅作记录-笔记

最新文章

  1. CoreCRM 开发实录 —— Profile
  2. Android开发之百度地图--环境搭建
  3. hdu 2546 饭卡 删除一个数的01背包
  4. Java类型相互转换byte[]类型,blob类型
  5. css+js实现兼容性select的样式
  6. 大数据性能调优之HBase的RowKey设计
  7. iOS: 学习笔记, Swift与Objective-C混用总结
  8. 对于deferred的一点点理解
  9. Linux 电子书共享下载--大家一起学习
  10. spring AOP 代理机制、执行过程、四种实现方式及示例详解
  11. 开源OSS.Social微信项目解析
  12. Android -- 贝塞尔使圆渐变为桃心
  13. ADC/DAC设计常见40问
  14. mysqli_fetch_array() ,mysqli_fetch_assoc()遇到的问题
  15. Spring Cloud 之Eureka(一)
  16. selenium “could not be scrolled into view”
  17. 深入理解JavaScript事件循环机制
  18. PHP中cURL的应用
  19. Ubuntu中VisualBox无法识别USB设备
  20. 四:(之六_镜像发布)Dockerfile语法梳理和实践

热门文章

  1. JDBC操作MySQL(crud)
  2. Learning Python 010 函数 2
  3. xgene:肿瘤相关基因 KRAS,,BRAF,,通路PI3K-AKT
  4. 使用Paramiko的问题
  5. MIC-3395单板机不识别PCI设备
  6. 【转】JAVA输出内容打印到TXT以及不同系统中如何换行
  7. 《鸟哥的Linux私房菜》读书笔记5
  8. 【Qt官方例程学习笔记】Address Book Example(代理模型)
  9. C#结构体指针的定义及使用详解(intptr的用法)
  10. 前端中的事件循环eventloop机制