JQuery和脚本缓存

我在JQuery中遇到了一个相当离奇的行为。

我正在使用以下代码动态加载一系列脚本:

for (var i=0; i<requiredScripts.length; i++) { $.ajax({ url: baseURL+"js/"+requiredScripts[i], async: false, dataType: 'script', success: checkLoaded }); } 

checkLoaded函数只增加一个计数器,这样当所有脚本都被加载后,它就会执行某些函数。

一切都工作正常,直到我上传了其中一个加载脚本的较新版本。 JQuery似乎继续加载旧的。 我试图刷新(并强制刷新)页面是徒劳的……

所以我禁用了缓存(来自WebDeveloper工具栏),现在脚本神奇地加载了。 但是当我重新启用缓存时,旧脚本又回来了……

我甚至从服务器删除文件,但没有做任何事情! (除非我禁用缓存,即)。

我确信我只是错过了一些非常简单的东西,但我无法理解。

提前感谢任何可以提供帮助的人。

编辑 :只是为了澄清,我确实希望缓存该文件。 我不明白的是为什么强制刷新页面不会导致获取新脚本。

另外,请注意,只有在我使用JQuery加载文件时才会发生这种情况,如果我在HTML中手动添加它们,则强制刷新会加载新页面。

编辑#2 :通过从FF删除缓存来解决。 仍然,不明白为什么CTRL + SHIFT + R没有做到这一点……

$ .ajax有一个缓存选项,它与mck89的答案完全相同,但是有点整洁:

 $.ajax({ url : 'example.com', cache : false, .... }); 

您只需使用经典缓存禁用方法即可。

 var cd=+new Date(); for (var i=0; i 

通过这种方式,脚本URL始终不同,并且您确定其内容未缓存。

告诉apache为您的JS文件发送no-cache标头:

  Header Set Cache-Control "max-age=0, no-store"