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 offset函数应用实例
Nov 14 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
Jul 10 Javascript
$.each遍历对象、数组的属性值并进行处理
Jul 18 Javascript
开源的javascript项目Kissy介绍
Nov 28 Javascript
node.js中的fs.fstat方法使用说明
Dec 15 Javascript
jquery+php实现滚动的数字特效
Nov 29 Javascript
对象题目的一个坑 理解Javascript对象
Dec 22 Javascript
js实现倒计时关键代码
May 05 Javascript
使用mint-ui开发项目的一些心得(分享)
Sep 07 Javascript
JavaScript 保护变量不被随意修改的实现代码
Sep 27 Javascript
VUE写一个简单的表格实例
Aug 06 Javascript
JS前端使用Canvas快速实现手势解锁特效
Sep 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
PHP与javascript对多项选择的处理
2006/10/09 PHP
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
如何基于python操作excel并获取内容
2019/12/24 Python
python实现控制台输出彩色字体
2020/04/05 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
C#如何进行LDAP用户校验
2012/11/21 面试题
高中运动会广播稿
2014/01/21 职场文书
上课玩手机检讨书
2014/02/08 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
申报优秀教师材料
2014/12/16 职场文书
党支部综合考察意见
2015/06/01 职场文书
退休教师追悼词
2015/06/23 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL