你该知道的ajax的cache参数,缓存属性 |
您所在的位置:网站首页 › ajax在ie浏览器请求 › 你该知道的ajax的cache参数,缓存属性 |
1.ajax的缓存是什么 Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验。当前这要求两次请求URL完全相同,包括参数。这个时候,浏览器就不会与服务器交互。. 用法: ajax的缓存读取只对 GET 请求方法有效,因为浏览器默认 POST 提交的请求必定有变化,所以不读缓存。 $.ajax({ cache : false, type : "GET", url : "/controller", data : {param1:param1,...}, success : function(data){ data.content; ... } });也就是说缓存的是目标URL 和后端返回的内容 2.这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源。Ajax缓存虽然有上述的好处,但是如果通过Ajax对一些后台数据进行更改的时候,虽然数据在后台已经发生改变,但是页面缓存中并没有改变,对于相同的URL,Ajax提交过去以后,浏览器还只是简单的从缓存中拿数据,这种情况当然就不行了。 3.解决这种问题的方法,注意,方法是禁用页面缓存,而不是禁用ajax缓存。 解决这个问题最有效的办法是禁止页面缓存,有以下几种处理方法: 1、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”); 2、在服务端加 header(“Cache-Control: no-cache, must-revalidate”); 3、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“If-Modified-Since”,”0″); 4、在 Ajax 的 URL 参数后加上 “?fresh=” + Math.random(); //当然这里参数 fresh 可以任意取了 5、第五种方法和第四种类似,在 URL 参数后加上 “?timestamp=” + new Date().getTime(); 6、用POST替代GET:不推荐 7、jQuery提供一个防止ajax使用缓存的方法: 8、修改load 加载的url地址,如在url 多加个时间参数就可以: function loadEventInfoPage(eventId){ $.ajaxSetup ({ cache: true // AJAX cache 下面加上时间后load的页面中的js、css图片等都会重新加载, //加上这句action会重新加载,但是js、css、图片等会走缓存 }); $("#showEventInfo").load(ctx + "/custEvents/viewEvent.action", {"complaint.Id":eventId, "tt":(new Date()).getTime()},function(){}) }9、设置html的缓存 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |