十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
jquery中 cache: true和false的区别是:true的话会读缓存而且真的到服务器上;alse的话会在url后面加一个时间缀,而是让它跑到服务器获取结果。
成都创新互联专注于珠海企业网站建设,成都响应式网站建设公司,商城系统网站开发。珠海网站建设公司,为珠海等地区提供建站服务。全流程按需定制设计,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
cache
cache高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的RAM位置的内容及这些数据项的存储地址。
当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。
使用缓存,就是在取出数据结果后,暂时将数据存储在某些可以快速存取的位置(例如各种NoSQL如Redis,HBase,又或MemoryCache等等),于是就可以让这些耗时的数据结果多次重复。
是jQuery的ajax options 中的吧:
如果cache为true,会缓存ajax结果,第二次及更多次的调用会用缓存中的结果。
如果不想使用缓存,只要cache:false就可以了。
如:
$.ajax({
type: "POST",
url: "some.php",
cache:false,
success: function(msg){
alert( "Data Saved: " + msg );
}
});
使用方法:jQuery.ajax( options )
其中options有很参数,是以key/value形式出现的。
在使用过程中,遇到过一个问题,就是回调方法不执行,后来查了一下,是缓存的问题。
cache Default: true,
Added in jQuery 1.2, if set to false it will force the pages that you request to not be cached by the browser.
所以如果不想使用缓存,只要cache:false就可以了。
如:
$.ajax({ type: "POST", url: "some.php",
cache:false, success: function(msg){ alert( "Data Saved: " + msg ); } })
我们先看看这个问题是怎么引起来的:
如果没有进行额外设置的话,如果请求的地址和参数及参数的值完全一样,就会发生jquery ajax使用缓存的情况。
jquery ajax使用缓存的解决方案:
1.在请求的url后面加上一个随机参数(***.do?random=Math.random)这不失为一个好方法,缺点就是在所有的jquery ajax请求的地方都要加上这个随机参数,新项目还行,老项目的花,这是个巨大的工作量。
2.给jquery ajax请求设置禁用缓存的全局设置
我们都知道在jquery ajax的的方法中有个cache参数,如果设置为false,那么就不进行缓存。这么怎么设置全局的jquery ajax cache参数呢?
答案就是ajaxSetup() 方法,该方法可以为所有的ajax请求统一设置默认参数。那么可以设置如下代码:
$(function(){
$.ajaxSetup ({
cache: false //关闭AJAX缓存
});
});
最后如果没有common.js文件(所有页面都调用的JS文件),那么把这段代码放到jquery库文件里面吧。
解答完毕!
jquery中ajax的缓存问题需要增加参数cache: $.ajax({ type: "GET", cache: true, url: 'aa.php', dataType: "html", cache: true, success: function (res) { $('.page-loading').remove(); $('.page-content .page-content-body').html(res); }...
当请求的资源并不是一层不变的时候,即不能简单的一直使用客户端缓存时,可能通过将cache设置为false来发送请求,这实际上是在url加上时间戳组合成新的url,每次发送新的请求,这明显加大了服务器的压力。
对于这种情况,可以通过ifModified参数改进缓存方式(即:cache和ifModified都设置为true)。
他针对的是资源变动比较频繁的情况,希望时刻获取最新的文件,而应该是想要尽量使用缓存吧。