首页 > 解决方案 > 单页应用程序发布/更新后如何回发到服务器

问题描述

我有一个 SPA Angular 网站。每当我们发布对网站的更改时,用户的浏览器都不会返回服务器来获取新的 javascript 文件。该应用程序愉快地继续在用户的浏览器中运行,虽然它会对数据进行 ajax 调用,但 javascript 文件不会更改。如果调用的后端 API 的签名发生更改等,这可能会导致错误。如果用户刷新页面,他们会获得更新的 javascript 文件,之后一切正常。

有没有办法告诉浏览器该站点已更新并获取新的 javascript 文件,而不仅仅是使用相同的文件运行应用程序?

我使用 Angular CLI 来构建应用程序,所以当网站发布时,javascript 文件在末尾有哈希值等。这不是文件被缓存而不是更新的问题......这是浏览器知道的问题它需要请求文件或刷新页面。

标签: javascriptsingle-page-application

解决方案


您可以使用Web Worker轮询服务器以获取更改,并在发现更改时刷新浏览器。

网络工作者的替代方法是使用setInterval,只是在给定时间后刷新。

另一种选择是在您的 API 响应中有一个版本号,当版本号不同步时,JavaScript 处理程序会刷新页面。


推荐阅读