3

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

我的担心:ServiceWorker是否也支持离线表单?- 如果是这样,那么我的其他担忧清单是:

  1. 它在客户端(存储、会话、本地、数据库)存储不完整的 HTML 表单数据的位置?
  2. 它以哪种形式存储用户填写的数据(加密等)
  3. 如何解决数据安全/隐私问题?返回用户是同一个用户?- 如果一个用户在公共场所填写了表格并且失去了互联网连接并留下了不完整的表格并继续前进,现在下一个直接用户可以看到最后一个用户离开表格的不完整的表格数据。
4

1 回答 1

4

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

但是这一切都不会因为注册了服务工作者而自动发生——默认情况下,服务工作者绝对不会做任何事情。只有当您在 service worker 中编写代码以挂钩不同的事件(installfetchmessage等)时,事情才会变得有趣。

假设,如果您要在服务工作者中编写代码,该代码为 HTML 资源缓存 HTTP 响应,然后fetch使用该缓存响应响应请求 URL 的事件,那么浏览器将返回并呈现相同的 HTML,如果响应来自网络。不会有任何特殊的“表单状态”与 HTML 响应正文一起缓存。

如果出于某种原因,您确实想要保存“表单状态”,以便离开带有表单的页面的用户可以返回并继续编辑它,那么您必须独立于caches暴露给服务工作者的对象来执行此操作。(caches要求您使用Request对象作为键并将Response对象存储为值。)

因此,您可能会使用IndexedDB,或者您可以使用localStorage,或者其他任何东西来做到这一点。它独立于服务工作者,特定的隐私/安全考虑取决于实施者。

于 2015-02-17T21:26:00.787 回答