【问题标题】:Angular: Signal application update to browserAngular:向浏览器发送信号应用程序更新
【发布时间】:2018-10-23 08:35:43
【问题描述】:

我有一个 Angular 应用程序。如果我在开发服务器中运行它,一切都很好。

如果我制作 prod 版本并将 dist 的文件复制到 webservers 的公共目录中,则浏览器不会加载新版本 - 即使我刷新页面。

我使用的是 Firefox,网络服务器是 Apache2。如果我清理浏览器缓存,它将正确加载新版本。

如何向浏览器发出信号以重新加载新版本而不是使用缓存的版本?

【问题讨论】:

  • 您是否使用--output-hashing=none 构建?
  • 我没有设置。我应该将其设置为无还是全部?
  • all 如果您使用 --prod 选项构建,这是默认值。

标签: angular


【解决方案1】:

当您将它们包含在 index.html 中时,您可以将版本查询参数附加到文件中,并在每次新构建时增加它。

当浏览器发现查询字符串参数发生变化时,会强制再次从服务器检索文件

应该是这样的

<script type="text/javascript" src="main.js?ver=1"></script>

【讨论】:

  • 虽然这是真的,并且在很多情况下都很有用,但 Angular 默认会在文件名中添加一个哈希,这是比查询字符串参数更好的技术,因为有些系统会忽略查询参数。
【解决方案2】:

您的服务器需要配置为发送适当的缓存控制标头。如果您无法控制服务器配置,您还可以查看将元标记添加到 index.html

Angular 应用程序的 prod 构建应该生成带有新哈希的 js 文件,这应该允许最终用户获得新版本。但是,可能是以一种不会获得更改的方式设置缓存。 Adding meta tags to the indexsetting up the server correctly 应该可以解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多