除问号外的其他缓存方法



我正在使用$.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 阻止了 URL 中的"?"问号。因此,我需要使用除问号(非缓存)方法以外的另一种方法来运行我的函数。有什么办法可以做到这一点吗?

编辑,更新

尝试

$.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");

参见 jQuery.ajax( [settings ] ) at beforeSend , 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>

最新更新