美文网首页
ajax请求请求数据缓存问题分析以及解决方案

ajax请求请求数据缓存问题分析以及解决方案

作者: Www刘 | 来源:发表于2017-06-07 09:31 被阅读641次

在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳

大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的时候总是使用IE缓存

什么是Ajax缓存原理?

Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验。当前这要求两次请求URL完全相同,包括参数。这个时候,浏览器就不会与服务器交互。

Ajax缓存的好处

这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源。

Ajax缓存的不足

Ajax缓存虽然有上述的好处,但是如果通过Ajax对一些后台数据进行更改的时候,虽然数据在后台已经发生改变,但是页面缓存中并没有改变,对于相同的URL,Ajax提交过去以后,浏览器还只是简单的从缓存中拿数据,这种情况当然就不行了。

四、解决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使用缓存的方法:

javascript" language="JavaScript">

$.ajaxSetup ({

cache: false //close AJAX cache

});

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的缓存

相关文章

  • ajax请求请求数据缓存问题分析以及解决方案

    在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统...

  • 解决缓存与数据库的数据一致性问题

    解决缓存与数据库的数据一致性问题 问题分析 多个写请求执行顺序不同导致脏数据 存在更新缓存请求和读缓存请求,读缓存...

  • XMLHttpRequest对象的扩展问题

    解决XMLHttpRequest请求的缓存问题:增加时间戳 解决AJAX应用的中文问题: 请求数据中包含中文,服务...

  • 2018-12-28

    简单爬虫项目(二) 对数据资源使用ajax异步请求网站进行爬取的几种方式 请求分析详见ajax请求分析 Phant...

  • 缓存设计原则

    缓存设计中的可能存在的问题以及解决方案 缓存穿透。 意思是请求一个不存在的数据,总是从缓存拿不到数据,然后就去DB...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

  • ajax请求接口参数

    如何使用ajax请求数据: // 请求接口数据$.ajax({ url: 'http://localhost/...

  • Django项目运行时出现self.status.split('

    这个错误是因为多次刷新,ajax多次进行请求,而且请求数据过大导致。ajax默认异步请求,改成同步可以解决问题。

  • ajax

    特点 ajax ajax入门 ajax请求与发送数据 ajax工具类封装 type:请求类型url:请求地址dat...

  • Redis企业级场景

    1、缓存预热 (1)问题排查 请求数量较高 主从之间数据吞吐量较大,数据同步操作频度较高 (2)解决方案 缓存预热...

网友评论

      本文标题:ajax请求请求数据缓存问题分析以及解决方案

      本文链接:https://www.haomeiwen.com/subject/kadofxtx.html