在不更改源代码的情况下执行两次 ng build --prod
Posted
技术标签:
【中文标题】在不更改源代码的情况下执行两次 ng build --prod【英文标题】:execute ng build --prod twice without changing sourcecode 【发布时间】:2020-08-28 08:36:25 【问题描述】:您好,如果我运行 ng build --prod 两次而不进行任何更改,有人可以解释一下会发生什么。无论是否有文件更改,是否有一些优化或让每个文件都被转译/重新编译。
有人可以解释生成的文件哈希吗?目的是什么,ng 是否以某种方式使用它们?
【问题讨论】:
【参考方案1】:如果您查看生成的 html,您会发现请求的脚本。
<script src="bundle.hashhashhash.js"></script>
这个脚本可以很容易地缓存,从而提高您的应用程序启动时间。如果您使用更改的 src 编译您的应用程序,您将获得另一个哈希值,该哈希值向浏览器发出信号以使用新脚本而不是缓存的脚本
【讨论】:
【参考方案2】:文件名中散列的目的是让浏览器在缓存文件时再次下载文件。
让我们这样说吧。
假设ng build --prod
哈希在您每次运行时都保持不变。所以你有类似 main-1234.js 的东西
现在您部署应用,有人访问您的页面,浏览器将下载并缓存您的文件。
一段时间后,您部署了一个新版本,但仍然生成了 main-1234.js 文件。现在,之前访问过您网站的用户不会获得您的文件的新版本,因为浏览器已经缓存了它。如果缓存过期,他们将需要一些时间才能看到新文件,这通常不是您想要的行为。
当您为生产而构建时,Angular 不会使用或关心哈希值。当您运行ng build --prod
时,它实际上会删除您在dist
下的文件。试试看:)
【讨论】:
以上是关于在不更改源代码的情况下执行两次 ng build --prod的主要内容,如果未能解决你的问题,请参考以下文章