【问题标题】:versioning javascript files as part of maven build to avoid web browser caching作为 maven 构建的一部分对 javascript 文件进行版本控制以避免 Web 浏览器缓存
【发布时间】:2014-04-07 17:49:00
【问题描述】:

我有一个 java/spring web 应用程序,它使用相当多的 javascript 作为 gui 的一部分。但是,当我发布新版本时,我会手动使用 ide 的重构工具,如果 JavaScript 文件被编辑,则重命名它们。

这可以避免用户被不兼容/过时的 javascript 文件卡住;该文件不包含新功能……或者更糟的是使用较新的 jsp/html。

有没有更好的方法来为 javascript 文件及其脚本标签引用添加版本控制?

【问题讨论】:

    标签: java javascript maven version-control release-management


    【解决方案1】:

    你可以做这样的事情。这会强制浏览器加载新更新的 javascript。

    yourscript.js?version=1234567890
    

    开启

    <script type="text/javascript" src="yourscript.js?version=1234567890"> </script>
    

    每次更新 javascript 文件时,只需更新 yourscript.js?version=1234567891 之类的数字

    它是如何工作的?

    每当您使用新版本号进行更新时,浏览器都会将此解释为一个新文件。所以旧的 javascript 文件不会被缓存。

    【讨论】:

    • 浏览器每次使用新版本号更新时都会将此解释为新文件。所以旧的 javascript 文件不会被缓存。
    • 您能告诉我们需要在 javascript 文件中设置版本的位置吗?
    • @Lijo 你不需要,它只是停止浏览器缓存结果,因为对 js 文件的调用发生了变化。
    【解决方案2】:

    一个好的做法是在文件名中插入一个哈希(或其中的一部分)。我使用它的方式,它对文件内容执行 md5(在将所有文件一起压缩和编译之后)。

    例如,您最终会得到一个类似于 script.H6oylsUj9sWn.min.js 的文件名。

    这样,如果文件没有改变,哈希值保持不变,客户端不必重新下载文件。

    除此之外,我的编译器还会生成我的服务器端脚本,将它们插入到我的 html 中。您当然可以将所有这些自动化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多