Javascript 获取脚本时是否有其他方法禁用缓存?

Javascript 获取脚本时是否有其他方法禁用缓存?,javascript,jquery,Javascript,Jquery,我用这个来获取脚本 $.getScript("http://www.example.org/"); 但是,我不希望它被缓存。这意味着如果我再次使用getScript,脚本应该再次获取它 这一个在理论上有效 $.getScript("http://www.example.org/?" + Math.random()); 但实际上,事实并非如此。因为远程站点url上禁用了“?”,所以我的问题是,是否有其他方法告诉浏览器不要缓存?根据您的需要重新创建该功能: (function () {

我用这个来获取脚本

$.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()
部分并不重要


仅供参考,另一种解决缓存问题的方法是,在检索此脚本时,服务器返回正确的缓存头,指示浏览器从不缓存此文件。

如果这样做,正如我看到的日志所示,它会添加相同的缓存头。像这样/?=\u 768472138423他们在站点url结构上禁用了“”。所以,如果您尝试这样显示,example.org/index.php?123,它会显示为禁止。因为他们禁用了“?”@user198989-好的,这是一个更清晰的描述。然后,您必须解决缓存来自服务器的头的问题。浏览器端必须有一些东西。可能是一些元标记来防止cavhe。@user198989-您可以在页面中使用
标记,但这也是服务器端的事情。当您通过Javascript添加
标记时,页面将已经在缓存中,因为它来自服务器。可能对您有帮助是的,但需要添加到远程站点的页面。如果可以,我会首先删除“”保护:)可能的副本