javascript - 防止 RequireJS 缓存所需的脚本

标签 javascript jquery requirejs

RequireJS 似乎在内部做了一些缓存所需的 javascript 文件的事情。如果我对所需文件之一进行更改,我必须重命名该文件才能应用更改。

将版本号作为查询字符串参数附加到文件名末尾的常见技巧不适用于 requirejs <script src="jsfile.js?v2"></script>

我正在寻找一种方法来防止 RequireJS 所需脚本的这种内部缓存,而不必在每次更新脚本文件时重命名它们。

跨平台解决方案:

我现在使用 urlArgs: "bust=" + (new Date()).getTime()用于开发期间的自动缓存清除和urlArgs: "bust=v2"对于生产,我在推出更新的所需脚本后增加硬编码版本号。

注意:

@Dustin Getz 在最近的回答中提到,当 Javascript 文件像这样不断刷新时,Chrome 开发者工具会在调试期间删除断点。一种解决方法是写 debugger;在代码中触发大多数 Javascript 调试器中的断点。

特定于服务器的解决方案:

对于可能更适合您的服务器环境(例如 Node 或 Apache)的特定解决方案,请参阅下面的一些答案。

最佳答案

RequireJS 可以配置为为每个脚本 url 附加一个值以进行缓存清除。

来自 RequireJS 文档 (http://requirejs.org/docs/api.html#config):

urlArgs: Extra query string arguments appended to URLs that RequireJS uses to fetch resources. Most useful to cache bust when the browser or server is not configured correctly.

例如,将“v2”附加到所有脚本:

require.config({
    urlArgs: "bust=v2"
});

出于开发目的,您可以通过附加时间戳来强制 RequireJS 绕过缓存:

require.config({
    urlArgs: "bust=" + (new Date()).getTime()
});

关于javascript - 防止 RequireJS 缓存所需的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315088/

相关文章:

javascript - JQuery 窗口滚动

javascript - 在 Angular JS 中显示数组

javascript - RequireJS 管理大型模块

当从 jQuery load() 调用 URL 时,javascript 未从 django 模板加载

javascript - 使用 HTML 导入进行依赖注入(inject)

javascript - 从字符串中删除字符串,其中字符串的一部分可以是javascript中的数字

javascript - 谷歌地图 : Return is Not working in Reverse Geocoading

javascript - $(#id).on() 不适用于动态创建的内容

javascript - 提交之前隐藏部分然后恢复

javascript - 按字母顺序对多个列表进行排序