使用RequireJS的URL缓存击破参数?

12

我正在使用RequireJS(jQuery版本),想要在我的脚本中添加GET参数以防止不必要的缓存。

我正在使用文档中建议的urlArgs参数。这是我的app-build.js文件:

({
  appDir: "../",
  baseUrl: "scripts/",
  urlArgs: "cache=v2",
  ...

然后,我按照以下步骤构建项目:
$ node ../../r.js -o app.build.js

在app-build目录中的输出现在包含两个文件:require-jquery.js,这与之前的文件相同,以及require-jquery.js?cache=v2,它是空白的。 index.html文件似乎没有引用cache=v2。当我在浏览器中加载页面时,我看不到任何脚本附加cache=v2参数。
我做错了什么吗?
3个回答

1
关于urlArgs的文档:
“在开发过程中使用它可能很有用,但一定要在部署代码之前将其删除。”
还有来自Github的James Burke的此问题:“不要在构建过程中尝试使用urlArgs”。

1
urlArgs参数更多是运行时配置(即仅由RequireJS理解,而不是r.js优化器),似乎是因为其作者表示认为它只适用于开发(和“坏”的开发服务器不能发送正确的标头)。因此,您需要在require.config调用中进行配置(在由require.js加载的.js文件中,通常是main.js或config.js):
require.config({
    // other config, like paths and shim

    urlArgs: "cache=v2"
});

或者,根据这个 Stack Overflow 答案,您可以在加载 require.js 之前直接在 <script> 块中定义它。

0

我建议您尝试使用不同的build.js文件来进行优化器和运行实时应用程序。根据您的描述,优化器脚本似乎无法正确处理urlArgs参数(因为它输出了一个名为require-jquery.js?cache=v2的文件)。

我不会期望cache=v2出现在index.html中(为什么会呢?),但您确实可以在网络活动日志中看到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接