我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

ajax调用中ie缓存问题怎么解决-创新互联

本篇内容主要讲解“ajax调用中ie缓存问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax调用中ie缓存问题怎么解决”吧!

创新互联是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,温江服务器租用,海外高防服务器,机柜大带宽、租用·托管,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

本文实例分析了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方式)

到此,相信大家对“ajax调用中ie缓存问题怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是创新互联建站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前名称:ajax调用中ie缓存问题怎么解决-创新互联
本文来源:http://mswzjz.cn/article/dpihos.html

其他资讯