Ajax页面缓存问题分析与解决办法

原创 2015年11月20日 11:52:34
Ajax页面缓存是ajax处理数据时对一些重复相同数据进行一个缓存操作,这样从另一个层面对于我们来讲是非常的不错了,但有时我们并不希望它缓存要如何处理呢?下面我们一起来看看关于页面缓存问题分析与解决,希望例子对各位会带来帮助。

一、什么是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使用缓存的方法:

<script type="text/javascript" language="javascript">
     $.ajaxSetup ({
           cache: false //close AJAX cache
      });
</script>
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的缓存

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">   
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">   
<META HTTP-EQUIV="Expires" CONTENT="0">


版权声明:本文为博主原创文章,未经博主允许不得转载。

Ajax缓存原理

原文:http://www.lingdublog.com/123.html 一、什么是Ajax缓存原理 Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Aj...
  • hudashi
  • hudashi
  • 2016年03月23日 15:25
  • 7542

jquery的ajax的缓存问题

本文主要描述如何解决Jquery ajax的缓存问题。
  • wwd0501
  • wwd0501
  • 2014年12月19日 17:39
  • 1396

ajax缓存问题解决途径

我用PHP和Ajax结合,添加数据之后,刷新前台页面,数据没有变化。我改动PHP动态脚本,只有重新找开IE再输入地址,才能看到效果。以上这些是不是缓存的原因啊?怎么解决?ajax缓存问题解决途径:是缓...
  • keyunq
  • keyunq
  • 2006年11月20日 11:29
  • 1241

Ajax如何关闭缓存

首先了解缓存的作用,缓存的主要作用是:如果是不需要修改的数据,可以避免每次请求都需要向服务器发送请求,从而减少服务器压力,提高运行速度 如果开启缓存的话,如果请求的地址和参数及参数值都相同,则返回缓...
  • aawmx123
  • aawmx123
  • 2017年05月30日 23:06
  • 230

ajax缓存与浏览器差异

在编写ajax时遇到问题,部署到服务器上和本地是一样的webapps,但运行服务器上代码出错,是缓存原因。 在大神教导下,原因总结如下: 编写ajax时尽量使用jquery ajax, 它帮程序员屏...
  • sjtu_chenchen
  • sjtu_chenchen
  • 2016年04月26日 13:57
  • 517

浅谈Ajax解决浏览器的缓存问题

Ajax能提高页面载入速度的主要原因是通过Ajax减少了重复数据的载入,也即在载入数据的同时将数据缓存到内存中,一旦数据被加载,只要没有刷新页面,这些数据就会一直被缓存在内存中,当提交的URL与历史的...
  • zhouziyu2011
  • zhouziyu2011
  • 2017年03月04日 13:56
  • 429

ajax,get时请求异步缓存

ajax中的get为何有时执行,有时不执行? 在IE中用ajax的get方式请求同一个地址获取数据时,经常碰到回调函数成功执行,前台又有数据的情况,但是无法请求到后台获得最新的数据。 原因是aja...
  • CommandBaby
  • CommandBaby
  • 2016年06月02日 15:15
  • 2897

ajax清理缓存

  • 2011年11月28日 16:48
  • 2KB
  • 下载

jquery ajax缓存问题解决方法小结

今天在做一个ajax数据提交功能开始利用get方式一直发现提交的数据都是一样,返回的数据也很久不刷新了,这个我知道是ajax缓存问题,后来在网上整理了一些ajax缓存问题解决方法,下面给大家分享一下。...
  • AlbertFly
  • AlbertFly
  • 2016年09月27日 10:25
  • 4463

AJAX 缓存问题的两种解决方法(IE)

做一个项目用到Ajax,开始觉得挺好,后来发现一个问题,例如删除一项,恢复之后就不能再接着删除, 必须要等一段时间,后来知道是IE缓存的问题 AJAX缓存页面是一个刚接触AJAX的人一定会遇到的问...
  • yaoyaoopen
  • yaoyaoopen
  • 2013年12月23日 16:56
  • 1480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ajax页面缓存问题分析与解决办法
举报原因:
原因补充:

(最多只允许输入30个字)