javascript - 单页应用程序发布/更新后如何回发到服务器
问题描述
我有一个 SPA Angular 网站。每当我们发布对网站的更改时,用户的浏览器都不会返回服务器来获取新的 javascript 文件。该应用程序愉快地继续在用户的浏览器中运行,虽然它会对数据进行 ajax 调用,但 javascript 文件不会更改。如果调用的后端 API 的签名发生更改等,这可能会导致错误。如果用户刷新页面,他们会获得更新的 javascript 文件,之后一切正常。
有没有办法告诉浏览器该站点已更新并获取新的 javascript 文件,而不仅仅是使用相同的文件运行应用程序?
我使用 Angular CLI 来构建应用程序,所以当网站发布时,javascript 文件在末尾有哈希值等。这不是文件被缓存而不是更新的问题......这是浏览器知道的问题它需要请求文件或刷新页面。
解决方案
您可以使用Web Worker轮询服务器以获取更改,并在发现更改时刷新浏览器。
网络工作者的替代方法是使用setInterval,只是在给定时间后刷新。
另一种选择是在您的 API 响应中有一个版本号,当版本号不同步时,JavaScript 处理程序会刷新页面。
推荐阅读
- android - 当我使用 Image Asset 插入 PNG 图像时,它会变成 gray 。如何插入不同尺寸的彩色图像?
- html - 为什么输入的值属性没有改变?
- c# - C# EF Core - 如何获取第一项或 null
- ios - 运行 IntentsExtension 时,如何调试主应用程序?
- java - 我不断收到“扫描仪无法解析为某种类型”错误。我正在使用 Java 和 Visual Studio,这适用于初学者 Java 类
- javascript - 从 _generateSessionId() 获得的会话 ID 和通过解析 sockjs._transport._url 获得的会话 ID 有什么区别?
- java - 加载 PDFBox + Zxing 识别的条码字体
- wordpress - 带有 ACF Wordpress 插件的一些特定字段数组的自定义 API
- ffmpeg - 什么是 rtmq:// 协议?
- r - 如何应用权重——不同群体的调查回复比例