首先,服务人员可能会做很多事情。例如,他们可以访问IndexedDB,因此始终可以从受控页面或服务工作者的上下文中保存和加载任意数据。
但是这一切都不会因为注册了服务工作者而自动发生——默认情况下,服务工作者绝对不会做任何事情。只有当您在 service worker 中编写代码以挂钩不同的事件(install
、fetch
、message
等)时,事情才会变得有趣。
假设,如果您要在服务工作者中编写代码,该代码为 HTML 资源缓存 HTTP 响应,然后fetch
使用该缓存响应响应请求 URL 的事件,那么浏览器将返回并呈现相同的 HTML,如果响应来自网络。不会有任何特殊的“表单状态”与 HTML 响应正文一起缓存。
如果出于某种原因,您确实想要保存“表单状态”,以便离开带有表单的页面的用户可以返回并继续编辑它,那么您必须独立于caches
暴露给服务工作者的对象来执行此操作。(caches
要求您使用Request
对象作为键并将Response
对象存储为值。)
因此,您可能会使用IndexedDB
,或者您可以使用localStorage
,或者其他任何东西来做到这一点。它独立于服务工作者,特定的隐私/安全考虑取决于实施者。