4

为了避免浏览器缓存我优化的 JS 包,我想在请求 URL 中包含一个 MD5 和。我试过类似的东西:

<script src="lib/require.js" data-main="app/main.js?md5=ABCD"></script>

但是,查询字符串的引入会导致 GET 请求/main.js。也就是说,查询字符串丢失了,甚至scripts路径中也丢失了。

如何强制使用data-main我计算的哈希加载指定脚本的请求?请注意,正在生成标记,因此我可以在 HTML 文档的任何位置注入散列。

4

1 回答 1

5

诀窍是使用urlArgs配置设置。因此,在此示例中,代码应类似于:

<script>
require = {
    urlArgs: 'md5=ABCD'
};
</script>
<script src="lib/require.js" data-main="app/main.js"></script>

确保在加载库之前定义全局require对象。require.js

这是有效的,因为 RequireJS 在启动时会运行以下代码(从 v2.1.10 开始,请参阅未压缩源代码的第 190 行):

//Allow for a require config object
if (typeof require !== 'undefined' && !isFunction(require)) {
    //assume it is a config object.
    cfg = require;
    require = undefined;
}

检查浏览器的开发工具,您应该会看到查询字符串上的参数:

在此处输入图像描述

于 2013-10-21T13:05:45.623 回答