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 相关文章推荐
Javascript 布尔型分析
Dec 22 Javascript
JavaScript 事件对象的实现
Jul 13 Javascript
Javascript中的var_dump函数实现代码
Sep 07 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
jquery制作LED 时钟特效
Feb 01 Javascript
JavaScript原生对象常用方法总结(推荐)
May 13 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
Dec 17 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
解决Linux无法正常安装与卸载Node.js的方法
Jan 19 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
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函数http_build_query使用详解
2014/08/20 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
PHP实现添加购物车功能
2017/03/06 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
javascript 类方法定义还是有点区别
2009/04/15 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
JQuery中attr属性和jQuery.data()学习笔记【必看】
2016/05/18 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
python中xrange和range的区别
2014/05/13 Python
Python re模块介绍
2014/11/30 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
python3.7 的新特性详解
2019/07/25 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
Python reques接口测试框架实现代码
2020/07/28 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
生产厂厂长岗位职责
2013/12/25 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
房屋出售授权委托书
2014/10/12 职场文书
无婚姻登记记录证明
2015/06/18 职场文书