如果我的网络应用包含多个子域,这是否意味着我必须拥有多个服务工作者,每个子域一个?或者我可以让一个跨子域工作的服务工作者吗?
答案 0 :(得分:13)
每个子域都被认为是不同的来源,所以是的,您需要为每个子域注册一个服务工作者。这些工作人员中的每一个都有自己的缓存和范围。
答案 1 :(得分:2)
每个子域都被视为不同的源,您必须为每个源注册一个服务工作者,但您可以通过将Service-Worker-Allowed
响应头设置为相同源的范围列表,为服务工作者重用相同的源。控制。
答案 2 :(得分:1)
如果您指的是多个域,则用户可以直接在多个域(例如www.example.com
和hello.example.com
上访问您的网站,那么我相信答案是肯定的,您需要多个服务工作者来处理每个域。
但是,如果您的主应用程序在一个域www.example.com
上提供,但可能会调用其他域,例如api.example.com
或images.examples.com
甚至fonts.gstatic.com
来加载Google字体或{{ 1}}加载静态资产然后单个服务工作者就足够了。这就是你如何捕捉和缓存(或做任何你喜欢的请求):
example.s3.amazonaws.com
在示例中,我使用Chrome团队中的sw-toolbox库来帮助您缓存不同的资源。