4

这个问题已经占据了我一整天,我无法弄清楚发生了什么

我可以看到我的服务工作人员已注册,但是“有时”当我在开发人员工具中单击离线时,我的域的服务工作人员就消失了!

但这是我重新加载应用程序时看到以下行为的主要问题。

可以看到 ngsw.json 被加载了 2 次,而 main.js 被加载了 3 次!main.d3ae2084xxxx && main.bbe5073dxxxx && 然后又是 main.d3ae2084xxxx!

在此处输入图像描述

如果我检查两个 ngsw.json 请求的响应,您可以看到两者都将 main.d3ae2084xxxx 显示为 main.js 的正确版本,但它仍然加载 main.bbe5073dxxxx ...

第一个 ngsw.json 请求

在此处输入图像描述

第二个 ngsw.json 请求

在此处输入图像描述

更郁闷的是实际加载的版本是之前的main.bbe5073dxxxx……!!!

如果有人对如何发生这种情况有任何想法,请告诉我。

更新......所以发现了这个优秀的小端点

https://you-app-url/ngsw/state 

这将为您提供有关服务人员的大量调试信息。

在我的情况下

Driver state: EXISTING_CLIENTS_ONLY (Degraded due to failed initialization: Hash mismatch (cacheBustedFetchFromNetwork): https://dev-xxxx.net/main.eb8468bb3ed28f02d7c2.js : expected b5601102b721e0cf777691d327dc965d40d1c96e, got 83c18fdb4a5942c964a31c119a57e0b8e16fe46e (after cache busting)

因此,在我的情况下,这似乎是某种 CDN 问题,当我确定时会更新答案。

4

1 回答 1

1

您现在可能已经解决了这个问题,但我遇到了同样的问题,结果证明是由于 CDN(在我的实例中是 Cloudflare)正在优化内容。

在 Cloudflare 中,关键选项是需要禁用的“自动缩小”。

于 2020-05-15T16:18:23.130 回答