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操作select option 的代码小结
Jun 21 Javascript
js判断上传文件类型判断FileUpload文件类型代码
May 20 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
JavaScript中实现Map的示例代码
Sep 09 Javascript
js获取页面及个元素高度、宽度的代码
Apr 26 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
Oct 30 Javascript
JavaScript设计模式之享元模式实例详解
Jan 17 Javascript
微信小程序页面间跳转传参方式总结
Jun 13 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 Javascript
Js利用正则表达式去除字符串的中括号
Nov 23 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
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php实现异步数据调用的方法
2015/12/24 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
关于this和self的使用说明
2010/08/01 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
详解javascript函数的参数
2015/11/10 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
分享Python字符串关键点
2015/12/13 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
python try except 捕获所有异常的实例
2018/10/18 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
精彩的推荐信范文
2013/11/26 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
2014年统战工作总结
2014/12/09 职场文书
贷款担保书
2015/01/20 职场文书
欠款起诉书范文
2015/05/19 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers