【问题标题】:URL cache-busting parameters with RequireJS?RequireJS 的 URL 缓存破坏参数?
【发布时间】:2012-03-08 12:55:04
【问题描述】:

我正在使用 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.js(与之前的文件相同)和require-jquery.js?cache=v2(空白)。

index.html 文件似乎没有对cache=v2 的任何引用。当我在浏览器中加载页面时,我看不到任何脚本附加了任何cache=v2 参数。

我做错了吗?

【问题讨论】:

    标签: javascript jquery requirejs browser-cache


    【解决方案1】:

    urlArgs 上的文档:

    “在开发过程中使用它会很有用, 但是请务必在部署代码之前将其删除”

    this issue from Github,詹姆斯·伯克: “在构建过程中不要尝试使用 urlArgs”

    【讨论】:

      【解决方案2】:

      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> 块中定义它。

      【讨论】:

        【解决方案3】:

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

        我不希望 cache=v2 出现在 index.html 中(为什么会这样?),但您希望它出现在网络活动日志中是对的。

        【讨论】:

          猜你喜欢
          • 2013-05-07
          • 2017-03-20
          • 2017-09-09
          • 2014-04-13
          • 1970-01-01
          • 2012-03-09
          • 1970-01-01
          • 1970-01-01
          • 2020-05-19
          相关资源
          最近更新 更多