日期:2014-05-16  浏览次数:20312 次

JQuery -- ajax 如何缓存引入的js文件
有如下代码:

$.ajax({
    cache:true,
    url:'aa.php',
    success:function(/*html*/){
        // 比如是ajax返回的结果
        var html = "<div>" + 
                   "<script src='aa.js'/>" + 
                   "<link href='aa.css' type='text/css' rel='stylesheet'>" + 
                   " some content " + 
                   "</div>";
$("#id").after(html);
    }
});

 
发现 请求为
aa.com/aa.php
aa.com/aa.css
aa.com/aa.js&_=1373600904652

这样好像 js 文件不被缓存
看了下 JQuery, 如果插入的html中有script标签,就会用ajax请求js文件
发现这个函数比较可疑

function ajaxExtend( target, src ) {
   //......
   if ( deep ) {
jQuery.extend( true, target, deep );
   }
   return target;
}

传进去的target 没有 cache属性
返回的时候就被设置了cache:false属性

然后就看不懂了

请问有没有方法去掉 _=1373600904652 ???
jQuery Ajax Cache JavaScript HTML

------解决方案--------------------
为什么不提前加载css,js而用ajax
------解决方案--------------------
$("#id").after(html);
关键应该在这里,与html是不是AJAX返回的无关。。
我试试0.0
------解决方案--------------------
html方法会自动分析script标签然后执行里面的代码和加载src指定的js文件

cache是针对url:'aa.php',这个,不是针对html方法中设置的script