问号以外的缓存方法不同?

时间:2014-11-22 21:08:36

标签: javascript jquery

我正在使用$.getscript("")从远程服务器获取脚本。

function fetch(url){
window.setInterval(function (){
$.getScript(url);
},50000)
}

fetch("http://example.com/script.js");

默认情况下它具有非缓存,我们可以看到输出显示为

<script async="" src="http://example.com/script.js?7330519448833367000&_=1416681336440">

我们可以看到它总是添加?73325614数字,总是不使用缓存的数字。但是有一个问题,远程服务器的htaccess会阻止&#34;?&#34; URL中的问号。所以,我需要使用另一种方式来运行我的函数而不是问号(非缓存)方法。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

修改,更新

尝试

$.ajaxSetup({
    beforeSend: function (jqxhr, settings) {
      // if `settings.url` string contains `?` character,
      // `.split()` `settings.url` string at `?` , creating `url` array
      // set `settings.url` to item at index `0` within `url` array :
      // original `settings.url` string , preceding `?` character
      if (/\?/.test(settings.url)) {
        var url = settings.url.split("?");
        if (url.length >= 2) {
            settings.url = url[0];
        }
      }
    }
})

var s = null;
function fetch(url) {
    s = window.setInterval(function () {
        $.getScript(url)
    }, 50000)
}

fetch("http://example.com/script.js");

beforeSendjQuery.ajax( [settings ] )

上查看String.prototype.split()

$.ajaxSetup({
    beforeSend: function (jqxhr, settings) {
      if (/\?/.test(settings.url)) {
        var url = settings.url.split("?");
        if (url.length >= 2) {
            settings.url = url[0];
            jqxhr.temp = settings.url
        }
      }
    }
})

var s = null;
function fetch(url) {
    s = window.setInterval(function () {
        $.getScript(url)
    .done(function (data, textStatus, jqxhr) {
    console.log(textStatus, jqxhr.temp, window.gist);
    $("#result").append(jqxhr.temp + "\n")
})
    // substitued 5000 for 50000
    }, 5000)
}

fetch("https://gist.githubusercontent.com/anonymous/ca95080f6d3a7b32bb95/raw/120dec0dce825193b0551ad1fbda4b71029b336d/js.js");
#result {
    width : 300px;
    font-size : 12px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="result"></div>