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

时间:2012-03-08 12:55:05

标签: javascript jquery requirejs browser-cache

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

我正在使用the urlArgs parameter,正如文档中所建议的那样。这是我的app-build.js文件:

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

然后我按如下方式构建项目:

$ node ../../r.js -o app.build.js

app-build目录中的输出现在包含require-jquery.jsrequire-jquery.js?cache=v2,后者与以前相同,而index.html则为空白。

cache=v2文件似乎没有cache=v2的任何引用。当我在浏览器中加载页面时,我没有看到任何脚本附加任何{{1}}参数。

我做错了吗?

3 个答案:

答案 0 :(得分:1)

urlArgs上的文档:

“在开发过程中,使用它可能很有用, 但是在部署代码之前一定要删除它“

this issue from Github,James Burke: “在构建期间不要尝试使用urlArgs”

答案 1 :(得分:1)

urlArgs参数更多是运行时配置(即,只有RequireJS才能理解,而不是r.js优化器),似乎是因为其作者stated认为它只适合开发(和“坏”) “不发送正确标头的开发服务器”。所以你需要在require.config调用中配置它(在require.js加载的.js文件中,通常是main.js或config.js):

require.config({
    // other config, like paths and shim

    urlArgs: "cache=v2"
});

或者,根据其他SO answer,您可以在加载require.js之前直接在<script>块中定义它。

答案 2 :(得分:0)

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

我不希望cache = v2出现在index.html中(为什么会这样?),但你可以在网络活动日志中预料到它。