从ServiceWorker缓存的js文件访问localStorage

问题描述

我知道您无法从 ServiceWorker 访问 localStorage,但是我找不到与我的用例匹配的任何信息。

  • 我有 index.htmlsw.jslogic.js
  • index.html “加载” 服务工作者 (sw.js)
  • Service Worker 所做的只是缓存 index.htmllogic.js 文件用于离线可用性(具有 实现了“安装”、“激活”和“获取”侦听器)
  • 全部 业务逻辑在 logic.js 文件中;正在使用 localStorage

一切正常,我只是想确保这种方法没有任何问题。

解决方法

没关系,是的。

您可以将 Service Worker 视为代理为 logic.js 和任何其他资源/子资源发出的网络请求。一旦网络请求完成,Service Worker 就有效地“脱离了画面”(它运行的线程实际上会停止,除非有活动事件)。

Service Worker 参与加载 logic.js 的事实并不妨碍您使用本地存储或在 logic.js 内执行任何其他操作。