我如何绕过 Service Worker 缓存?

How can i bybass service worker cache?

我有一个渐进式网络应用程序。在主页上我有一个登录模式。如果用户登录应用程序重新加载,现在服务器呈现用户配置文件而不是登录按钮。现在遇到的问题是,当我实现 pwa 时,它会缓存主页和其中的所有内容,因此在用户登录后不会呈现来自服务器的新页面。 我的应用程序后端在 Nodejs(REST API) 中并使用 javascript 来使用 api 但我使用 ejs 渲染页面。我该如何解决这个问题?现在我决定不缓存我有登录模式的主页。这样做之后,我意识到该应用程序现在不符合 PWA 安装要求。

听起来你不应该配置你的服务工作者来缓存你的正常 HTML。相反,您可以使用一个 service worker,它会在在线时始终访问网络,并会在导航请求失败时显示自定义“抱歉,您离线”HTML。

下面是遵循此模式的实例:

https://googlechrome.github.io/samples/service-worker/custom-offline-page/

这样做足以满足“添加到主屏幕”PWA 安装要求。

您可以在 Service Worker 中缓存所有内容。 当您需要为经过身份验证的用户和未经身份验证的用户显示不同的内容时,您可以根据需要在 UI 代码中甚至在 service worker 中呈现。

一个常见的例子是 show/hide header 中的登录、注销和配置文件 link。这一切都可以在页面加载时使用几行代码来实现。 这些例子大多是classList.[add|remove|toggle]。配置文件可能使用简单的模板并设置包装器的 innerHTML。 到头来也没那么复杂,我每次申请都是这么干的。