浅析XMLHttpRequest的缓存问题
在使用XMLHttpRequest中有没有遇到过,第一次使用是好的,刷新一下就不行了,清空一下缓存再刷新又好了。
这是在使用XMLHttpRequest中常遇到的一个问题,在有的时候XMLHttpRequest请求的结果会缓存在同一个URL中,如果你请求之后的响应不同,就会产生一些莫名其妙的问题,当然也包括文章一开始那个呵呵。
解决方法:
知道了原理就简单了,也就是每次请求的URL不同,让它每次都去服务器端请求,而不是使用缓存。下面有两种自己常用的方法:
第一种方法是加时间戳
var url = BaseURL + "&timeStamp=" + new Date().getTime();
第二种方法加个随机数
var url = BaseURL + "&r=" + Math.random();
可能还有很多其它的方法,只要你能保证让它每次都去服务端去请求就OK了。
相关推荐
-
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
随机推荐
- JS使用正则控制用户输入银行卡号及格式化
- FcScript V1.0 使用说明帮助文件
- access数据库用sql语句添加字段,修改字段,删除字段
- 学习ExtJS border布局
- oracle 12c安装教程(window)
- Oracle批量查询、删除、更新使用BULK COLLECT提高效率
- Python网络编程 Python套接字编程
- Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
- js基础之DOM中元素对象的属性方法详解
- php获取中文拼音首字母类和函数分享
- 也谈php网站在线人数统计
- 浅谈python中截取字符函数strip,lstrip,rstrip
- asp中实现清除html的函数
- javascript中arguments,callee,caller详解
- Shell中的${}、##和%%使用范例
- PHP防注入安全代码
- Nginx实现静态资源的反向代理实例
- 详解C语言中accept()函数和shutdown()函数的使用
- 深入解析Android系统中应用程序前后台切换的实现要点
- Jlabel实现内容自动换行简单实例