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 写类方式之十
Jul 05 Javascript
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
alert中断settimeout计时功能
Jul 26 Javascript
javascript中返回顶部按钮的实现
May 05 Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 Javascript
Bootstrap学习笔记之css组件(3)
Jun 07 Javascript
Node.js中用D3.js的方法示例
Jan 16 Javascript
详解angular 中的自定义指令之详解API
Jun 20 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
微信小程序如何获取用户信息
Jan 26 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
JS替换字符串中指定位置的字符(多种方法)
May 28 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
Python KMeans聚类问题分析
2018/02/23 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
合理化建议书
2015/02/04 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
遗失证明范文
2015/06/19 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书