欢迎您访问我爱IT技术网,今天小编为你分享的javascript教程:【禁止ajax缓存获取程序最新数据的方法】,下面是详细的讲解!
禁止ajax缓存获取程序最新数据的方法
今天做项目,几乎所有的提交都是通过ajax来提交,我测试的时候发现,每次提交后得到的数据都是一样的,调试可以排除后台代码的问题,所以问题肯定是出在前台。每次清除缓存后,就会得到一个新的数据,所以归根到底就是浏览器缓存问题。纠结了很久,终于解决了,在这里总结一下。
我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在载入数据的同时将数据缓存到内存中,一旦数据被加载其中,只要我们没有刷新页面,这些数据就会一直被缓存在内存中,当我们提交 的URL与历史的URL一致时,就不需要提交给服务器,也就是不需要从服务器上面去获取数据,虽然这样降低了服务器的负载提高了用户的体验,但是我们不能获取最新的数据。为了保证我们读取的信息都是最新的,我们就需要禁止他的缓存功能。
解决方案有如下几种:
1、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
3、在URL后面加上一个随机数: "fresh=" + Math.random();。
4、在URL后面加上时间搓:"nowtime=" + new Date().getTime();。
5、如果是使用jQuery,直接这样就可以了$.ajaxSetup({cache:false})。这样页面的所有ajax都会执行这条语句就是不需要保存缓
存记录。
关于禁止ajax缓存获取程序最新数据的方法的用户互动如下:
相关问题:Ajax用get方法,提交数据时,如何清空缓存
答:在你的提交的参数的最后面加上“+"&_dc="+new Date().getTime()”,这是一个时间,每次提交时,都会产生不同的时间,所以这样就可以避免产生缓存。例如:xmlHttp.open("GET", "/Check.jsp?name="+encodeURI(encodeURI(value))+"&_dc="+new Date().... >>详细
相关问题:如何禁用jquery ajax缓存
答:get方法如果您的url每次不加一个时间戳(xx.php?v=20133829这种让每次请求感觉地址不一样)的话还是会有缓存的,因为get方式的特点就是可以缓存。如果用post的话您设不设置 $.ajax({type: "get",url: "请求地址", cache:fasle,//默认缓存是true... >>详细
相关问题:如何禁止IE缓存,采用Ajax技术数据更新不及时
答:原因:IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据。 方法1:服务器端代码加入response.setHeader("Cache-Control", "no-cache, must-revalidate"); 方法2:用JavaScript在Ajax提交... >>详细
- 【firefox】firefox浏览器不支持innerText的解决
- 【Extjs】Extjs学习过程中新手容易碰到的低级错误
- 【clearInterval】js clearInterval()方法的定义
- 【ComboBox】ComboBox 和 DateField 在IE下消失的
- 【dom】javascript dom追加内容实现示例-追加内容
- 【checkbox】让checkbox不选中即将选中的checkbox
- 【Array】js中更短的 Array 类型转换-类型转换
- 【append】append和appendTo的区别以及appendChil
- 【ExtJs】ExtJs 表单提交登陆实现代码-表单提交-
- 【ajax清除浏览器缓存】Ajax清除浏览器js、css、
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
