JQuery中ajax如何缓存引入的js文件


有如下代码


 $.ajax({
    type: "GET",
    cache: true,
    url: 'aa.php',
    dataType: "html",
    success: function (res) {
    $('.page-loading').remove();
    $('.page-content .page-content-body').html(res);
});

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

这样好像 js 文件不被缓存
请问有没有方法去掉 _=1373600904652 ???

jquery Ajax JavaScript

mj1986 9 years, 8 months ago

cache:true 改成 cache:false ,再看看请求的链接。

生夏如花、 answered 9 years, 8 months ago

cache不要true啊

anosa answered 9 years, 8 months ago

我认为CSS和JS不是AJAX时候加载的,是在CALLBACK里填充到现有页面时加载的,你可以在CALLBACK第一行打个断点验证一下,断住时应该只有aa.php的请求。
如果猜测正确,你可以在 $('.page-content .page-content-body').html(res); 之前,把res里的js地址替换了再插进去。

今晚操你妹 answered 9 years, 8 months ago

昨晚研究了下这个问题,知道怎么回事了,在你的 ajax 请求前加一段代码:


 $.ajaxSetup({
  cache: true
});

同时你的那句 cache: true 可以省略,因为默认就是 cache: true ,只有 dataType "script" "jsonp" cache 默认为 false 。你在此处加的 cache: true 其实只影响了 aa.php 的缓存与否。

火宫木乃香 answered 9 years, 8 months ago

Your Answer