解决ajax调用中ie的缓存问题
来源:互联网 发布:制造业软件系统架构 编辑:程序博客网 时间:2024/05/17 03:03
解决ajax调用中ie的缓存问题
ajax请求调用的过程中发现的问题:后台请求是一个简单的.aspx文件,而这个页面又没有考虑过缓存的影响,使用ajax调试的时候发现有时候根本不走后台代码直接返回结果了,所以估计是受到浏览器缓存的影响。网上搜了一下,果然是缓存的问题:“IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据或新的数据”。
解决方法大致有下面几种:
1、只改进服务器端
(1)后台是简单的.aspx文件,直接加上<%@ OutPutCache Location="None"%>即可。
(2)但是如果后台是.ashx文件通常在类里直接修改缓存设置。
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2、只改进客户端
(1)利用加随机数或加时间戳改变请求地址
a、加随机数:var url='AjaxOperations.aspx?rdm='+Math.random()+'&action='+op;
b、加时间戳:var url='AjaxOperations.aspx?dtStamp='+new Date().getTime()+'&action='+op;
这一种解决方案,只需要加个时间或随机数作为参数,服务器端不需要任何改动就可以达到目的。
(2)前台异步调用设置XMLHttpRequest对象的属性
在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0"),个人认为这个才是“正道”。因为你不能明确哪些ajax请求是需要还是不需要缓存的(解决网站的性能瓶颈,利用有缓存的ajax居多),所以每次在发送请求的时候确认一下是否要缓存,相对于2中的第(1)条显然少写了一个url参数,而且服务器端(改进方法1)也不需要改变设置,但是对于已经封装好的ajax库,你可能已经不能在外面直接使用XMLHttpRequest对象了,通常的设置语法可能是将("If-Modified-Since","0")作为参数传递:ajaxObj.sendPost(其他参数列表,...."If-Modified-Since","0"); (post方式)
或者 ajaxObj.sendGet(其他参数列表,...."If-Modified-Since","0"); (get方式)
解决方法大致有下面几种:
1、只改进服务器端
(1)后台是简单的.aspx文件,直接加上<%@ OutPutCache Location="None"%>即可。
(2)但是如果后台是.ashx文件通常在类里直接修改缓存设置。
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2、只改进客户端
(1)利用加随机数或加时间戳改变请求地址
a、加随机数:var url='AjaxOperations.aspx?rdm='+Math.random()+'&action='+op;
b、加时间戳:var url='AjaxOperations.aspx?dtStamp='+new Date().getTime()+'&action='+op;
这一种解决方案,只需要加个时间或随机数作为参数,服务器端不需要任何改动就可以达到目的。
(2)前台异步调用设置XMLHttpRequest对象的属性
在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0"),个人认为这个才是“正道”。因为你不能明确哪些ajax请求是需要还是不需要缓存的(解决网站的性能瓶颈,利用有缓存的ajax居多),所以每次在发送请求的时候确认一下是否要缓存,相对于2中的第(1)条显然少写了一个url参数,而且服务器端(改进方法1)也不需要改变设置,但是对于已经封装好的ajax库,你可能已经不能在外面直接使用XMLHttpRequest对象了,通常的设置语法可能是将("If-Modified-Since","0")作为参数传递:ajaxObj.sendPost(其他参数列表,...."If-Modified-Since","0"); (post方式)
或者 ajaxObj.sendGet(其他参数列表,...."If-Modified-Since","0"); (get方式)
0 0
- 解决ajax调用中ie的缓存问题
- 解决IE浏览器中解决IE浏览中AJAX只能运一次的IE缓存问题
- 解决IE浏览器中解决IE浏览中AJAX只能运一次的IE缓存问题
- 解决Ajax在IE浏览器中缓存问题
- 解决IE下AJAX缓存问题的三种方法
- IE中ajax+jsp登录界面,由于缓存导致jsp过滤器与ajax请求被拦截的问题和解决
- IE中ajax+jsp登录界面,由于缓存导致jsp过滤器与ajax请求被拦截的问题和解决
- 解决ie缓存的问题
- IE浏览器中ajax使用缓存数据的问题
- 重写jquery的ajax,解决ie缓存
- Ajax中IE浏览器中的缓存问题
- 解决IE下jquery ajax无法获得最新数据的问题(IE缓存)
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- AJAX缓存问题的解决方法(IE)
- IE下Ajax缓存问题的解决办法
- C# page 的生命周期
- 编译android vlc
- 树状数组
- 嘎嘎嘎~~~
- android在代码中四种设置控件背景颜色的方法(包括RGB)
- 解决ajax调用中ie的缓存问题
- jQuery的优势
- 十六进制转二进制输出
- android 中Message、Handler、Message Queue、Looper之间的关系
- js去掉字符串前后空格的五种方法
- lsof命令
- 6-8 编程练习题答案
- 杂文 - [1.1]使用库语言排序算法
- 一个人的精彩