'Service Worker'是否支持离线HTML表单数据?

Is 'Service Worker' support offline HTML form data?

Service Workers 本质上充当位于 Web 应用程序之间的代理服务器。

我的问题:ServiceWorker是否也支持离线表单? - 如果是这样,那么我的其他关注事项是:

  1. 客户端不完整的 HTML 表单数据存储在哪里(存储、会话、本地、数据库)?
  2. 以何种形式存储用户填写的数据(加密等)
  3. 如何处理数据 security/privacy?返回的用户是同一个用户? - 如果一个用户在 public 处填写了表格并丢失了互联网连接并留下了不完整的表格并继续前进,现在下一个直接用户可以看到不完整的表格数据,最后一个用户离开了表格。

首先,service workers 可以做很多事情。例如,他们可以访问 IndexedDB,因此始终可以从受控页面或服务工作者的上下文中保存和加载任意数据。

但是 none 通过注册 service worker 会自动发生——默认情况下,service worker 什么都不做。只有当您在 Service Worker 中编写代码以挂钩不同的事件(installfetchmessage 等)时,事情才会变得有趣。

假设,如果您要在 service worker 中编写代码,缓存 HTML 资源的 HTTP 响应,然后响应请求 URL 的 fetch 事件缓存的响应,然后浏览器将返回并呈现与响应来自网络时相同的 HTML。不会有任何特殊的 "form state" 与 HTML 响应主体一起缓存。

如果出于某种原因,您确实想要保存 "form state" 以便使用表单离开页面的用户可以 return 并继续编辑它,您必须独立完成caches object that's exposed to the service worker. (caches requires that you use Request objects as keys and stores Response 个对象作为值。)

所以您可以使用 IndexedDB 来完成它,或者您可以使用 localStorage 来完成它,或者其他任何东西。它独立于 service worker,具体 privacy/security 考虑由实施者决定。