`
longgangbai
  • 浏览: 7332345 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

防止jQuery Load使用缓存的方法

阅读更多

 

一、用法

jquery的load函数是请求另一个文件并加载到当前DOM里的调用,load方法的完整格式是:load( url, [data], [callback] )(注意没有参数是GET方式请求,有参数则是 POST方法)。

  • url:是指要导入文件的地址。
  • data:可选参数;因为Load不仅仅可以导入静态的html文件,还可以导入动态脚本,例如PHP文件,所以要导入的是动态文件时,我们可以把要传递的参数放在这里。
  • callback:可选参数;是指调用load方法并得到服务器响应后,再执行的另外一个函数。

缓存这东西,在一定程度上加快了页面的装载,但是也常常给我们带来麻烦。我在上篇文章里简单介绍了jQuery中Load方法的使用。在实际运用中,我们可能会碰到浏览器缓存的问题。比如我就在IE7里碰到这个问题。

jQuery Load样本代码:

$(document).ready(function(){
  $("#labels").load("/blog/categories/labels.html");
  //在页面装载时,在ID为#labels的DOM元素里插入labels.html的内容。
});

当我更新了labels.html以后,在IE7里load方法仍旧在使用旧的labels.html,就算我按刷新键也不管用。好在jQuery提供一个防止ajax使用缓存的方法,把下面的语句加在head的javascript文件里,就可以解决问题。

$.ajaxSetup ({
    cache: false //关闭AJAX相应的缓存
});

此外我再介绍几种方法解决缓存的方法。注意:我没有在jQuery load的问题上测试过,这些方法仅供参考!

1.更改文件名,比如把labels.html改成lables_new.html,但是这是没有办法的办法,一般没有人这么做。

2.在labels.html后加上特定时间,比如lables.html?20081116。在实际工作中,在我更新css/javascript文件后,我都是用这种办法来防止文件被缓存。

3.在labels.html文件的顶部加入以下声明:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

4.load函数不仅可以调用HTML,也可以调用script,比如labels.php,可以在php文件里使用header函数:

<?php
header("Cache-Control: no-cache, must-revalidate");
?>

 

另外两种解决方案:

在请求路径中添加一个时间参数值为当前的时间或者在表单中添加一个隐藏的字段将该字段的值设置为当前时间。

分享到:
评论
1 楼 whatable 2010-10-19  
很遗憾你的这些办法“没有……测试过”,事实上真的是“仅供参考”的

经过实践检验,这些办法根本就不行(jQuery1.4 IE8)

据我到目前的观察,load所加载的似乎是内存级别的缓存,而不是页面级别的。页面不论如何声明自己不要被缓存,load都是不管的,而且ajaxSetup也不能真正影响到load。

发现的一个情况是:如果两次load之间间隔时间较长的话(比如3、5分钟),后一次load就可能不去适用之前的缓存了。这个事实一方面印证了这和页面的缓存设置无关,另一方面从这个时间段的长度来看,让人怀疑这是javascript的垃圾回收机制产生的一个影响。。。。

以上仅仅是个人实践的反馈,虽然距离楼主发文已经过去1年,但如果楼主有新见解的话,还是希望能多多交流

相关推荐

    防止jQuery ajax Load使用缓存的方法小结

    一、用法 jquery的load函数是请求另一个文件并加载到当前DOM里的调用,load方法的完整格式是:load( url, [data], [callback] )(注意没有参数是GET方式请求,有参数则是 POST方法)。 * url:是指要导入文件的地址。...

    ajax与jquery无刷新验证用户之load()之post方法二

    在本例中,我们使用jQuery的load()方法来实现Ajax请求。load()函数通常用于动态加载HTML内容到指定的DOM元素中。在这个场景下,我们通过点击“登陆”按钮触发Ajax请求: ```javascript $("#denglu").click(function...

    使用JQuery load函数异步分页实例

    6. **优化性能**:为了提高效率,可以添加一些额外的优化,如缓存已加载的数据,防止重复加载,或者使用懒加载,只有当内容进入视口时才加载。 通过这种方式,我们能够实现一个快速且高效的异步分页系统,避免一次...

    jQuery load方法用法集锦

    **防止jQuery使用缓存:** 默认情况下,jQuery的AJAX请求包括`load`方法,可能会被浏览器缓存,导致无法获取最新的数据。可以通过设置全局的`ajaxSetup`来关闭缓存: ```javascript $.ajaxSetup({ cache: false }); ...

    前端项目-jquery.loadtemplate.zip

    `jquery.loadtemplate` 是一个基于 jQuery 的插件,专门用于加载和使用模板,使得在Web应用中动态渲染内容变得更加便捷。这个压缩包文件“frontend-project-jquery.loadtemplate.zip”包含了一个名为“jquery-...

    禁止JQuery中的load方法装载IE缓存中文件的方法

    当使用JQuery的load方法请求服务器上的文件时,如果文件内容已经存在IE的缓存中,并且服务器没有通过HTTP响应头明确告诉浏览器需要重新获取文件,那么IE浏览器会从缓存中读取这个文件,而不是向服务器发送新的请求。...

    jQuery:图片缓存 10 jQuery Image Cache Plugins and Scripts

    为了优化图片加载,开发人员经常使用jQuery插件来实现图片缓存功能。这样,图片可以在用户首次访问网站时预加载或在后台加载,从而提高后续访问的速度。本文将探讨10款优秀的jQuery图片缓存插件和脚本,以提升网页...

    Ajax与jquery相结合实现的无数新验证用户之load()get方法

    `Math.random()`用于生成一个随机值,防止浏览器缓存响应,`$("#username").val()`获取当前文本框中的用户名。请求完成后,回调函数会接收到服务器返回的数据,并通过`alert()`显示。 load()方法的GET方式提交数据...

    jquery中ajax常用的方法,jQuery ajax框架常用方法总结.docx

    jQuery 中 AJAX 常用的方法总结 jQuery 是一个功能强大且流行的 JavaScript 库,它提供了许多有用的方法来处理 AJAX 请求。AJAX(Asynchronous JavaScript and XML)是一种创建交互式网页的技术,它允许网页从...

    jquery1.4.1使用手册

    8. **效率优化**:在使用jQuery时,应注意性能优化,如减少DOM操作次数,使用高效的selector,避免使用全局变量,以及利用缓存机制提高性能。 9. **兼容性**:jQuery 1.4.1版本对当时的主流浏览器(如IE6/7/8、Fire...

    jquery 缓存问题的几个解决方法

    .load方法没有设置 cache参数 默认true ,特别在IE浏览器下,一般的ajax的方法都是cache等于true的! 解决办法几个: 1....修改jquery.js中,load方法,load方法也是调用的.ajax,增加cache:false 3.在你请求的链接

    jquery使用技巧总结

    减少DOM操作次数,使用`$(document).on()`替代直接绑定事件,以及利用缓存机制(如`var $el = $("#element");`)都能提高效率。 9. **兼容性与版本选择** 考虑到老版本浏览器的支持,选择合适的jQuery版本很重要。...

    jQuery Ajax使用 全解析

    对于需要更复杂配置的Ajax交互,或者需要对请求和响应进行更细致的处理时,则应使用jQuery.ajax()方法。此外,在使用jQuery Ajax时,也应考虑不同浏览器对于Ajax请求的支持情况,尤其是在处理跨域请求时。

    Jquery中Ajax 缓存带来的影响的解决方法

    此外,在某些情况下,浏览器可能会忽略`cache: false`的设置,特别是在通过链接触发Ajax请求时(例如,使用`$.load()`方法加载内容)。这时,可以考虑使用其他技巧来避免缓存,如在请求的URL中添加一个随机数或...

    jQuery 重复加载错误以及修复方法

    4. **使用CDN**:使用公共的CDN(内容分发网络)服务加载jQuery,这样浏览器可以从缓存中获取,减少服务器压力,同时减少重复加载的可能性。 5. **控制加载顺序**:在HTML中调整脚本引用的顺序,确保依赖关系正确。...

Global site tag (gtag.js) - Google Analytics