是否有另一种方法来禁用缓存时获取脚本

Is there another way to disable cache when fetching script?

本文关键字:缓存 获取 脚本 另一种 方法 是否      更新时间:2023-09-26

我用这个来获取脚本;

$.getScript("http://www.example.org/");
但是,我不希望它被缓存。意味着如果我再次使用getScript,脚本应该再次获取它。

这个在理论上可行;

$.getScript("http://www.example.org/?" + Math.random());

但实际上,它不是。因为"?"在远程站点url上被禁用,所以我的问题是,有没有其他方法告诉浏览器不缓存?

根据需要重新创建函数:

(function () {
    $.getScript = function(url, callback) {
        $.ajax({
                type: "GET",
                url: url,
                success: callback,
                dataType: "script",
                cache: false
        });
    };
})();

现在当你调用像

这样的函数时它将不再缓存
$.getScript('script.js', function()
{
    // non cached script.js
});

远端站点不能禁用"http://www.example.org/?" + Math.random()的有效性以防止缓存。

"?" + Math.random()的目的是创建一个不在本地浏览器缓存中的唯一URL。这是本地浏览器做出的缓存决定,对于本地浏览器缓存,远程站点是否忽略URL的"?" + Math.random()部分并不重要。

仅供参考,另一种解决缓存的方法是让您的服务器在检索此脚本时返回适当的缓存头,指示浏览器永远不要缓存此文件