一个域的两个服务工作者
Two service workers for one domain
我有一个 Web 应用程序当前正在使用 AppCache
进行离线存储。我正在尝试将此应用程序转换为使用 Service Workers
。我使用 this source 作为我的 Service Worker
的基础,除了 Service Worker
是使用 PHP
构建的,以便动态生成要缓存的文件数组。
问题是,用户点击的第一个页面是登录页面,现阶段我们对用户一无所知,所以不知道缓存哪些资源。我通过两个清单用 AppCache
解决了这个问题。 Login
页面的一个清单和所有其他页面使用的第二个清单。当我转换为 Service Workers
时,我想到了遵循相同的模式;有两个 Service Workers
- 一个用于登录页面,一个用于所有其他页面。
应用文件夹结构是这样的:
-- 已分享
-- 页面
- 登录
-- 第1页
- 第2页
-- 第3页
登录页面和各种页面都使用 Shared
文件夹中的代码,因此 Service Workers
的范围必须是应用程序的根目录。这就是问题所在。我现在发现我只能在具有根范围的域上注册一个 Service Worker
。我可以在 Login
页面上使用 /Pages/Login
范围注册第二个 Service Worker
,但是这样就无法访问共享资源。如果我对登录页面和其他页面使用相同的 Service Worker
,则注册会在登录页面上进行,并且生成的 url 列表不完整,因为它仅包含登录所使用的资源.
我很想知道是否有其他人处理过这个问题,并且可以提出解决这个问题的可能方向。
服务人员可以在其 scope
之外的 URL 秒内访问资源(即响应 fetch
事件)。这包括“更高”级别的 URLs,例如您的 /Shared
目录,或来自完全不同来源的 URLs,例如 CDN。
scope
限制决定了给定的服务工作者是否可以 控制 给定 URL 的网页。 Service Worker 只能控制 URL 以 scope
作为前缀的网页。
因此您可以创建多个服务工作者,并为每个服务工作者注册匹配不同 URL 前缀的 scope
,并且它们每个都可以响应您共享的 fetch
事件资源 URLs.
https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#scope_and_control
上有更多信息
我有一个 Web 应用程序当前正在使用 AppCache
进行离线存储。我正在尝试将此应用程序转换为使用 Service Workers
。我使用 this source 作为我的 Service Worker
的基础,除了 Service Worker
是使用 PHP
构建的,以便动态生成要缓存的文件数组。
问题是,用户点击的第一个页面是登录页面,现阶段我们对用户一无所知,所以不知道缓存哪些资源。我通过两个清单用 AppCache
解决了这个问题。 Login
页面的一个清单和所有其他页面使用的第二个清单。当我转换为 Service Workers
时,我想到了遵循相同的模式;有两个 Service Workers
- 一个用于登录页面,一个用于所有其他页面。
应用文件夹结构是这样的:
-- 已分享 -- 页面 - 登录 -- 第1页 - 第2页 -- 第3页
登录页面和各种页面都使用 Shared
文件夹中的代码,因此 Service Workers
的范围必须是应用程序的根目录。这就是问题所在。我现在发现我只能在具有根范围的域上注册一个 Service Worker
。我可以在 Login
页面上使用 /Pages/Login
范围注册第二个 Service Worker
,但是这样就无法访问共享资源。如果我对登录页面和其他页面使用相同的 Service Worker
,则注册会在登录页面上进行,并且生成的 url 列表不完整,因为它仅包含登录所使用的资源.
我很想知道是否有其他人处理过这个问题,并且可以提出解决这个问题的可能方向。
服务人员可以在其 scope
之外的 URL 秒内访问资源(即响应 fetch
事件)。这包括“更高”级别的 URLs,例如您的 /Shared
目录,或来自完全不同来源的 URLs,例如 CDN。
scope
限制决定了给定的服务工作者是否可以 控制 给定 URL 的网页。 Service Worker 只能控制 URL 以 scope
作为前缀的网页。
因此您可以创建多个服务工作者,并为每个服务工作者注册匹配不同 URL 前缀的 scope
,并且它们每个都可以响应您共享的 fetch
事件资源 URLs.
https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle#scope_and_control
上有更多信息