【发布时间】:2021-02-14 19:35:10
【问题描述】:
我有一个当前使用AppCache 进行离线存储的网络应用程序。我正在尝试将此应用程序转换为使用Service Workers。我使用this source 作为我的Service Worker 的基础,除了Service Worker 是使用PHP 构建的,以便动态生成要缓存的文件数组。
问题是,用户点击的第一个页面是登录页面,而现阶段我们对用户一无所知,所以不知道要缓存哪些资源。我通过两个清单用AppCache 解决了这个问题。 Login 页面的一个清单和所有其他页面使用的第二个清单。当我转换为Service Workers 时,我有了遵循相同模式的想法;有两个 Service Workers - 一个用于登录页面,一个用于所有其他页面。
应用程序文件夹结构如下:
-- 共享 -- 页面 - 登录 -- 第1页 - 第2页 -- 第3页
登录页面和各个页面都使用Shared 文件夹中的代码,因此Service Workers 的范围都必须是应用程序的根目录。这就是问题所在。我现在发现我只能在具有根范围的域上注册一个Service Worker。我可以使用/Pages/Login 范围在Login 页面上注册第二个Service Worker,但这将无法访问共享资源。如果我对登录页面和其他页面使用相同的Service Worker,则注册发生在登录页面上,并且生成的 url 列表不完整,因为它只包含登录使用的资源。
我很想知道是否有其他人处理过这个问题并且可以提出解决这个问题的可能方向。
【问题讨论】:
-
我猜你仍然可以从嵌套的服务工作者范围内访问共享资源。
标签: php service-worker html5-appcache