浅析XMLHttpRequest的缓存问题

在使用XMLHttpRequest中有没有遇到过,第一次使用是好的,刷新一下就不行了,清空一下缓存再刷新又好了。

这是在使用XMLHttpRequest中常遇到的一个问题,在有的时候XMLHttpRequest请求的结果会缓存在同一个URL中,如果你请求之后的响应不同,就会产生一些莫名其妙的问题,当然也包括文章一开始那个呵呵。

解决方法:
知道了原理就简单了,也就是每次请求的URL不同,让它每次都去服务器端请求,而不是使用缓存。下面有两种自己常用的方法:

第一种方法是加时间戳
var url = BaseURL + "&timeStamp=" + new Date().getTime();

第二种方法加个随机数
var url = BaseURL + "&r=" + Math.random();
可能还有很多其它的方法,只要你能保证让它每次都去服务端去请求就OK了。

(0)

相关推荐

  • XMLHttpRequest处理xml格式的返回数据(示例代码)

    示例代码: 复制代码 代码如下: //回调函数function callback() {    //alert(xmlhttp.readyState);    //5.接收响应数据    //判断对象的状态是交互完成    if (xmlhttp.readyState == 4) {        //判断http的交互是否成功        if (xmlhttp.status == 200) {            //使用responseXML的方式来接收XML数据对象的DOM对象   

  • AJAX(XMLHttpRequest.status)状态码

    下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET".注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持. timeout Number 设置请求超时时间(毫秒).此设置将覆盖全局设置. async

  • 原始XMLHttpRequest方法详情回顾

    用一个典型的登录验证的例子来演示吧 一般来说,使用XMLHttpRequest对象来进行登陆验证要经过以下这几个步骤 1.使用DOM方式获得输入框中的值          复制代码 代码如下: var userName = document.getElementById("userName").value; 2.创建XMLHttpRequest对象,这一步比较复杂,主要原因是要考虑浏览器的兼容性问题.       复制代码 代码如下: if (window.XMLHttpRequest

  • AJAX在不同浏览器中XMLHttpRequest对象的生成示例

    复制代码 代码如下: <script type="text/javascript"> function ajax() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }

  • 浅析XMLHttpRequest的缓存问题

    在使用XMLHttpRequest中有没有遇到过,第一次使用是好的,刷新一下就不行了,清空一下缓存再刷新又好了. 这是在使用XMLHttpRequest中常遇到的一个问题,在有的时候XMLHttpRequest请求的结果会缓存在同一个URL中,如果你请求之后的响应不同,就会产生一些莫名其妙的问题,当然也包括文章一开始那个呵呵. 解决方法:知道了原理就简单了,也就是每次请求的URL不同,让它每次都去服务器端请求,而不是使用缓存.下面有两种自己常用的方法: 第一种方法是加时间戳var url = B

  • 深入浅析 Spring Security 缓存请求问题

    为什么要缓存? 为了更好的描述问题,我们拿使用表单认证的网站举例,简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填写表单,点击登录 浏览器将用户名密码以表单形式发送给服务器 服务器验证用户名密码.成功,进入到下一步.否则要求用户重新认证(第三步) 服务器对用户拥有的权限(角色)判定: 有权限,重定向到origin url; 权限不足,返回状态码403("forbi

  • 浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)

    如果要显示最新的数据需要在页面中进行设置,取消缓存. 在showModalDialog的页面的Head标签内增加如下代码:<meta http-equiv="pragma" content="no-cache">这样页面就不会被缓存.从而保证了在对数据进行修改后,再次打开页面后显示最新的数据. HTML方面<meta http-equiv="pragram" content="no-cache"> 禁止

  • 浅析IE浏览器关于ajax的缓存机制

    IE浏览器对于同一个URL只返回相同结果.因为,在默认情况下,IE会缓存ajax的请求结果.对于同一个URL地址,在缓存过期之前,只有第一次请求会真正发送到服务端.大多数情况下,我们使用ajax是希望实现局部刷新的,所以这就牵扯到一个改进的问题. 如果想每次都获取到最新数据,我们只需保证每次传入的URL不一样.最简单的方法就是通过给url拼接参数.利用math函数的random()方法生成随机数. 比如访问百度www.baidu.com,我们就可以把地址写成www.baidu.com?t=Mat

  • SpringBoot浅析缓存机制之Redis单机缓存应用

    目录 Redis单机缓存 1. 创建项目添加缓存依赖 2. 缓存配置 3. 开启缓存 4. 创建 BookDao 5. 创建测试类 Redis单机缓存 和 Ehcache 一样,如果在 classpath 下存在 Redis 并且 Redis 已经配置好了,此时默认就会使用 RedisCacheManager 作为缓存提供者,Redis 单机缓存使用步骤如下: 1. 创建项目添加缓存依赖 创建 Spring Boot 项目,添加 spring-boot-starter-cache 和 Redis

  • SpringBoot浅析缓存机制之Ehcache 2.x应用

    目录 介绍 Ehcache 2.x 缓存 1. 创建项目添加缓存依赖 2. 添加缓存配置文件 3. 开启缓存 4. 创建 BookDao 5 .创建测试类 介绍 Spring 3.1 中开始对缓存提供支持,核心思路是对方法的缓存,当开发者调用一个方法时,将方法的参数和返回值作为 key/value 缓存起来,当再次调用改方法时,如果缓存中有数据,就直接从缓存中获取,否则再去执行该方法.但是,Spring 中并未提供缓存的实现,而是提供了一套缓存 API ,开发者可以自由选择缓存的实现,目前 Sp

  • Vue浅析讲解动态组件与缓存组件及异步组件的使用

    目录 1.什么是动态组件 2.如何实现动态组件渲染 3.如何实现缓存组件 4.异步组件 1.什么是动态组件 当我们希望页面中的某个地方,在不同组件之间进行动态切换,这时候除了条件渲染,还可以使用动态组件. 2.如何实现动态组件渲染 vue提供了一个内置的组件,专门用来实现动态组件的渲染:通过 is 属性动态指定要渲染的组件 因为要渲染的组件是不确定的,所以要通过data申明一个变量用来接收组件的名称,用 :is 动态绑定这个变量到组件中,通过按钮添加事件改变变量的值来切换相应组件 案例: //父

  • 浅析IE针对Ajax请求结果的缓存问题

    在默认情况下,IE会针对请求地址缓存Ajax请求的结果.换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端.在某些情况下,这种默认的缓存机制并不是我们希望的(比如获取实时数据),这篇文章就来简单地讨论这个问题,以及介绍几种解决方案. 目录 一.问题重现 二.通过为URL地址添加后缀的方式解决问题 三.通过JQuery的Ajax设置解决问题 四.通过定制响应解决问题 一.问题重现 我们通过一个ASP.NET MVC应用来重现IE针对Ajax请求结果的缓存.在

  • 浅析Yii2缓存的使用

    一个好的框架是肯定离不开缓存的使用,相反,一个没有缓存的框架也肯定不是一个好框架,好像是一个意思,不管了,我们先来看看yii2中是如何使用缓存的吧. 又是到我们第一步操作的时候了,我们先来配置组件. 方便起见,我们的缓存组件配置在common\config\main.php文件,先来简单配置下文件缓存 'components' => [ 'cache' => [ 'class' => 'yii\caching\FileCache', 'cachePath' => '@runtime

  • 浅析HTTP消息头网页缓存控制以及header常用指令介绍

    网页的缓存是由HTTP消息头中的"Cache-control"来控制的,常见的取值有private.no-cache.max-age.must-revalidate等,默认为private.其作用根据不同的重新浏览方式分为以下几种情况:(1) 打开新窗口值为private.no-cache.must-revalidate,那么打开新窗口访问时都会重新访问服务器.而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:Cache-control: max-age=5

随机推荐