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 tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 Javascript
给ListBox添加双击事件示例代码
Dec 02 Javascript
asp.net+js实现金额格式化
Feb 27 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
vue路由拦截及页面跳转的设置方法
May 24 Javascript
JQuery通过后台获取数据遍历到前台的方法
Aug 13 jQuery
在小程序Canvas中使用measureText的方法示例
Oct 19 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
Nuxt配置Element-UI按需引入的操作方法
Jul 06 Javascript
Javascript类型判断相关例题及解析
Aug 26 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文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP文件操作详解
2016/12/30 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
element中的$confirm的使用
2020/04/26 Javascript
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
python3中编码获取网页的实例方法
2020/11/16 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
卡骆驰德国官方网站:Crocs德国
2019/03/29 全球购物
营业经理岗位职责
2013/11/10 职场文书
2013英文求职信模板范文
2013/11/15 职场文书
经理秘书找工作求职信
2013/12/19 职场文书
旅游项目开发策划书
2014/01/18 职场文书
化工操作工岗位职责
2014/04/29 职场文书
区级文明单位申报材料
2014/05/15 职场文书
航空学院求职信
2014/06/11 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
民事二审代理词
2015/05/25 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
解决Python字典查找报Keyerror的问题
2021/05/26 Python
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS