IE下Ajax缓存问题的快速解决方法(get方式)


Posted in Javascript onJanuary 09, 2014

折腾了半天,程序中使用jquery的load方法进行请求,很奇怪为啥第二次无法发送请求。百度了一把,谁知load是用get方式进行请求的,因此IE浏览器对

其进行缓存了。网上搜了很多解决方案,一大把,下面是我认为比较全面的解决方案。主要分为客户端解决和服务端解决。

1.客户端解决方案
IE访问策略:Internet选项--浏览历史记录--设置-- Internet 临时文件的选项改为每次访问网页时也可以

1: 在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数

在javascript发送的URL后加上t=Math.random()
例如这样:URL+"&"+"t="+Math.random();或者new Date();

2: 在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")

一般情况下,这里的XMLHttpRequest不会直接使用
你应该可以找到这样的代码
XXXXX.send(YYYYYY);
那么,就把它变成
XXXXX.setRequestHeader("If-Modified-Since","0");
XXXXX.send(YYYYYY);

实践证明,两种方法都非常有效。
1、在服务端加 header("Cache-Control: no-cache, must-revalidate");
2、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
3、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了
5、第四种方法和第三种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime(); //推荐使用这种方式
6、用POST替代GET:不推荐

2.服务器端解决方案:

以Struts2为例:
Struts2 Server端用法

Xml代码

<package name="json-nocache" extends="json-default">
 <interceptors>
  <interceptor name="cachingHeadersInterceptor" class="com.ssa.pct.web.interceptor.CachingHeaderInterceptor" />
  <interceptor-stack name="defaultSecurityStack">
   <interceptor-ref name="defaultStack" />
   <interceptor-ref name="cachingHeadersInterceptor" />
  </interceptor-stack>
 </interceptors> <default-interceptor-ref name="defaultSecurityStack" />
</package>

Java代码
public class CachingHeaderInterceptor extends AbstractInterceptor {
 private static final long serialVersionUID = 1L;
 public String intercept(ActionInvocation invocation) throws Exception {
  ActionContext context = invocation.getInvocationContext();
  HttpServletResponse response = (HttpServletResponse) context.get(StrutsStatics.HTTP_RESPONSE);
  if (response != null) {
   response.setHeader("Cache-Control", "no-cache");
   response.setHeader("Pragma", "no-cache");
   response.setHeader("Expires", "-1");
  }
  return invocation.invoke();
 }
}
Javascript 相关文章推荐
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
node.js回调函数之阻塞调用与非阻塞调用
Nov 13 Javascript
jQuery实现的左右移动焦点图效果
Jan 14 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
Nov 21 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
Jul 07 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
Aug 24 Javascript
实现一个Vue自定义指令懒加载的方法示例
Jun 04 Javascript
JavaScript ES 模块的使用
Nov 12 Javascript
js/jquery解析json和数组格式的方法详解
Jan 09 #Javascript
JS获取节点的兄弟,父级,子级元素的方法
Jan 09 #Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 #Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 #Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 #Javascript
fmt:formatDate的输出格式详解
Jan 09 #Javascript
js中window.open()的所有参数详细解析
Jan 09 #Javascript
You might like
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
Python多线程爬虫简单示例
2016/03/04 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
django 实现简单的插入视频
2020/04/07 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
.net开发工程师面试题
2014/02/25 面试题
英文自荐信格式
2013/11/28 职场文书
座谈会主持词
2014/03/20 职场文书
公司聘任书模板
2014/03/29 职场文书
安全协议书范本
2014/04/21 职场文书
公司建议书怎么写
2014/05/15 职场文书
农行心得体会
2014/09/02 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers