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的3d效果实现代码
Mar 23 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
Feb 27 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
关于AngularJs数据的本地存储详解
Jan 20 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
JS全角与半角转化实例(分享)
Jul 04 Javascript
JavaScript文件的同步和异步加载的实现代码
Aug 19 Javascript
three.js实现炫酷的全景3D重力感应
Dec 30 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数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
python引用DLL文件的方法
2015/05/11 Python
深入理解python中的atexit模块
2017/03/07 Python
django定期执行任务(实例讲解)
2017/11/03 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python Subprocess模块原理及实例
2019/08/26 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
施工班组长岗位职责
2014/01/05 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
创文明城市标语
2014/06/16 职场文书
个人自荐书怎么写
2015/03/26 职场文书
python - timeit 时间模块
2021/04/06 Python
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android