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 相关文章推荐
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 Javascript
jquery 获取标签名(tagName)示例代码
Jul 11 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
Jul 17 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
浅析javascript中函数声明和函数表达式的区别
Feb 15 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
Jan 14 Javascript
Vue 2.0入门基础知识之内部指令详解
Oct 15 Javascript
极简主义法编写JavaScript类
Nov 02 Javascript
mint-ui 时间插件使用及获取选择值的方法
Feb 09 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python入门教程 python入门神图一张
2018/03/05 Python
python字典一键多值实例代码分享
2019/06/14 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python动态视频下载器的实现方法
2019/09/16 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
html5菜单折纸效果
2014/04/22 HTML / CSS
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
一夜的工作教学反思
2014/02/08 职场文书
求职面试个人自我评价
2014/02/28 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
2014年会计工作总结
2014/11/27 职场文书
初中同学会致辞
2015/08/01 职场文书
同学聚会祝酒词
2015/08/10 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏