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 相关文章推荐
document.compatMode介绍
May 21 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
Sep 29 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
js使下拉列表框可编辑不止是选择
Dec 12 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
通过bootstrap全面学习less
Nov 09 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
video.js使用改变ui过程
Mar 05 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
Apr 20 Javascript
node实现基于token的身份验证
Apr 09 Javascript
Vue项目引发的「过滤器」使用教程
Mar 12 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
德劲1104的电路分析与改良
2021/03/01 无线电
PHP的面向对象编程
2006/10/09 PHP
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
PHP可变函数的使用详解
2013/06/14 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
python创建和使用字典实例详解
2013/11/01 Python
Python操作串口的方法
2015/06/17 Python
Python中django学习心得
2017/12/06 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
打架检讨书100字
2014/01/08 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
会计演讲稿范文
2014/05/23 职场文书
国际商务专业求职信
2014/07/15 职场文书
教师工作失职检讨书
2014/09/18 职场文书
大学生求职意向书
2015/05/11 职场文书
庆七一晚会主持词
2015/06/30 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript