.ajax script 缓存,jquery ajax.getscript缓存问题解决办法

博客介绍了jQuery的getScript方法默认添加timestamp导致的问题,并提供了修改代码以添加缓存开关。通过自定义的cachedScript函数,可以避免重复加载同一脚本,同时允许控制缓存行为。文章还展示了如何使用jQuery的ajax方法替代getScript来防止自动添加timestamp。
摘要由CSDN通过智能技术生成

为 $.getScript() 添加缓存开关

代码如下

// add cache control to getScript method

(function($){

$.getScript = function(url, callback, cache) {

$.ajax({type: 'GET', url: url, success: callback, dataType: 'script', ifModified: true, cache: cache});

};

})(jQuery);

为 $.getScript() 移去自动加的时间 timestamp

jquery.getScript主要用来实现jsonp,浏览器跨域获取数据,使用方法如下

代码如下

$.getScript(url,function(){...});

它暗藏了一个深坑:自动给你的url后面加上上timestamp,比如你请求 http://www.45it.com,实际访问url是 "/?_=1379920176108"

如果你本身对url有特别解析,哪就悲剧了,会浪费很多时间debug,要拒绝这种行为,可以改用 jquery.ajax,用法如下

代码如下

1.$.ajax({

2. url: 'http://m.lutaf.com',

3. dataType: "script",

4. cache:true,

5. success: function(){}

6.});using jQuery.ajax and set cache = ture, you can remove the timestamp property alltogether.

动态加载JS【方法getScript】的改进

代码如下

//定义一个全局script的标记数组,用来标记是否某个script已经下载到本地

var scriptsArray = new Array();

$.cachedScript = function (url, options) {

//循环script标记数组

for (var s in scriptsArray) {

//console.log(scriptsArray[s]);

//如果某个数组已经下载到了本地

if (scriptsArray[s]==url) {

return { //则返回一个对象字面量,其中的done之所以叫做done是为了与下面$.ajax中的done相对应

done: function (method) {

if (typeof method == 'function'){ //如果传入参数为一个方法

method();

}

}

};

}

}

//这里是jquery官方提供类似getScript实现的方法,也就是说getScript其实也就是对ajax方法的一个拓展

options = $.extend(options || {}, {

dataType: "script",

url: url,

cache:true //其实现在这缓存加与不加没多大区别

});

scriptsArray.push(url); //将url地址放入script标记数组中

return $.ajax(options);

};

$(function () {

$('#btn').bind('click', function () {

$.cachedScript('t1.js').done(function () {

alertMe();

});

});

$('#btn2').bind('click', function () {

$.getScript('t1.js').done(function () {

alertMe();

});

});

});

自定义的缓存方法

getScript

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值