ajax调用中ie缓存问题解决方法

本文实例分析了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程序设计有所帮助。

时间: 2024-09-18 01:12:39

ajax调用中ie缓存问题解决方法的相关文章

ajax调用中ie缓存问题解决方法_AJAX相关

本文实例分析了ajax调用中ie缓存问题解决方法.分享给大家供大家参考,具体如下: ajax请求调用的过程中发现的问题:后台请求是一个简单的.aspx文件,而这个页面又没有考虑过缓存的影响,使用ajax调试的时候发现有时候根本不走后台代码直接返回结果了,所以估计是受到浏览器缓存的影响.网上搜了一下,果然是缓存的问题:"IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交.因此无法取到刚提交的数据或新的数据". 解决方法大致有下面几种: 1.只改进

web.py在SAE中的Session问题解决方法

  这篇文章主要介绍了web.py在SAE中的Session问题解决方法(使用mysql存储),本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下 这段时间一直想尝试着在SAE中使用Python,初步选择了Web.py框架做为开发框架,但是可怜SAE上的资料少的可怜,有点问题基本上解决不了,今天解决一个Session在Session的存储问题,在SAE中不能直接用本地文件存储,好像是权限的原因,我现在采用的是保存在mysql中,效果也不错.希望对大家有帮助.直接上代码了. index

在局域网AD内,有些网站可以访问,有些网站无法访问,IE左下角提示AJAX调用中...

问题描述 ajax调用中....,显示很长时间,整个系统变得十分缓慢,过了很长时间(十几.二十几分钟后),还能访问.我的电脑在局域网内,AD域环境下,XP系统,IE8浏览器有些电脑可以正常访问这些网站.网站应该没有问题.是IE的问题呢,还是网络问题?dns解析问题?请高手解答 解决方案 解决方案二:能否断点看下,是否是ajax到了后台出现什么状况了呢?解决方案三:可能是网段的问题解决方案四:怎么断点?不明白解决方案五:网段应该没有问题,其他计算机也在同网段下解决方案六:显示很慢的电脑上ping下

java 传递过程中出现的问题解决方法

java 传递过程中出现的问题解决方法  * 测试conn关闭情况  */ package com.hb.test; import java.sql.connection; /**  *  * @author icecold  */ public class testconn {    static connection conn = null;     public static void main(string[] args)throws exception {         conn =

jquery ajax缓存问题解决方法小结

解决方法: 1.给请求链接加随机数,如果用的是jQuery,直接设置: $.ajaxSetup({cache: false}); 2.把type改成post,并随便设置设置一个参数data: 'a=b'(一定要设置参数,否则仍然会被cache) 3.说说生成不一样的数,就用随机数 Math.random();或者或者时间戳 + new Date(); 例子  代码如下 复制代码 $.ajax({     type:"GET"     url:'test.html',     cache

详解WordPress中的头像缓存和代理中的缓存更新方法_php技巧

wordpress评论中的头像是使用Gravatar的头像服务(Gravatar官方注册地址:http://en.gravatar.com),用户的缓存头像一般都是固定不变的,所以我们可以将头像缓存到本地来提高我们网站的访问速度. 我的wordpress avatar目录的头像缓存: wordpress头像缓存功能设置方法首先是在根目录下建立一个文件夹avatar,权限755.再在里面放一个默认的头像(default.jpg),没头像的童鞋就会用默认的.代码如下: function my_ava

Ajax中浏览器的缓存问题解决方法_AJAX相关

每次清除缓存后,就会得到一个新的数据,所以归根到底就是浏览器缓存问题.纠结了很久,终于解决了,在这里总结一下. 我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在载入数据的同时将数据缓存到内存中,一旦数据被加载其中,只要我们没有刷新页面,这些数据就会一直被缓存在内存中,当我们提交 的URL与历史的URL一致时,就不需要提交给服务器,也就是不需要从服务器上面去获取数据,虽然这样降低了服务器的负载提高了用户的体验,但是我们不能获取最新的数据.为了保证我们读

Ajax中浏览器的缓存问题解决方法

每次清除缓存后,就会得到一个新的数据,所以归根到底就是浏览器缓存问题.纠结了很久,终于解决了,在这里总结一下. 我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在载入数据的同时将数据缓存到内存中,一旦数据被加载其中,只要我们没有刷新页面,这些数据就会一直被缓存在内存中,当我们提交 的URL与历史的URL一致时,就不需要提交给服务器,也就是不需要从服务器上面去获取数据,虽然这样降低了服务器的负载提高了用户的体验,但是我们不能获取最新的数据.为了保证我们读

IE9下Ajax无法刷新数据的缓存问题解决方法_AJAX相关

使用jQuery的getJSON从后台定时获取数据并刷新界面,使用以下方法时,在Chrome,Firefox下没问题,但在IE9下却无法刷新数据 $.getJSON(webApp + "/GetShowData.do?limit=" + limit,function(data){ //****************** } 原因是,在IE9下,进行Ajax请求时,若与之前请求相同,则不会再从浏览器获取数据,而是直接从本地获取,因此,在请求中加上时间戳,IE9便会认为是不同的请求,代码