3

我你去应用程序https://quotesaboutjesus.netlify.com/quotes并查看 Chrome 开发工具中的应用程序选项卡,几秒钟后你会看到服务人员运行良好......并且应用程序在在线模式下运行良好.

但灯塔审计结果总是告诉我:

  • 当前页面在离线时没有响应 200
  • 离线时 start_url 没有响应 200 start_url 确实响应了,但不是通过服务工作者。
  • 不注册控制 page 和 start_url 的 service worker

但是正如您将在我的代码中或直接在我的 manifest.webmanifest 中看到的那样,我做到了(我认为?:因为 Lighthouse 说我没有):

  1. 添加网络应用清单。
  2. 检查清单中的 start_url 是否正确。
  3. 将服务工作者添加到您的应用程序。
  4. 使用 service worker 在本地缓存文件。
  5. 离线时,使用 service worker 作为网络代理返回本地缓存的文件版本。

所以我不明白为什么我没有通过审计测试(你可以很容易地自己在网上复制它)。

我想这可能是因为我的 SW 注册有点晚,所以我尝试优化应用程序的性能,但即使现在它的性能得分更好(至少在审计测试期间为 90),它没有通过这个测试。

有人能帮我吗 ?

显示 Lighthouse 错误消息的图像

显示服务人员工作良好的图像

显示 (start_ul in) 清单的图像

4

1 回答 1

1

我也有这个问题,然后我在以下位置找到了这个解决方案: https ://stackoverflow.com/a/61152966/8581106

您应该添加registrationStrategy: "registerImmediately"到 app.module 中的 serviceWorker 注册:

ServiceWorkerModule.register("ngsw-worker.js", {
            enabled: environment.enableProdMode,
            registrationStrategy: "registerImmediately"
}),

如中所述

于 2020-12-03T08:50:54.260 回答