在多个子域中使用服务工作者

时间:2016-02-04 01:02:29

标签: service-worker progressive-web-apps

如果我的网络应用包含多个子域,这是否意味着我必须拥有多个服务工作者,每个子域一个?或者我可以让一个跨子域工作的服务工作者吗?

3 个答案:

答案 0 :(得分:13)

每个子域都被认为是不同的来源,所以是的,您需要为每个子域注册一个服务工作者。这些工作人员中的每一个都有自己的缓存和范围。

答案 1 :(得分:2)

每个子域都被视为不同的源,您必须为每个源注册一个服务工作者,但您可以通过将Service-Worker-Allowed响应头设置为相同源的范围列表,为服务工作者重用相同的源。控制。

答案 2 :(得分:1)

如果您指的是多个域,则用户可以直接在多个域(例如www.example.comhello.example.com上访问您的网站,那么我相信答案是肯定的,您需要多个服务工作者来处理每个域。

但是,如果您的主应用程序在一个域www.example.com上提供,但可能会调用其他域,例如api.example.comimages.examples.com甚至fonts.gstatic.com来加载Google字体或{{ 1}}加载静态资产然后单个服务工作者就足够了。这就是你如何捕捉和缓存(或做任何你喜欢的请求):

example.s3.amazonaws.com

在示例中,我使用Chrome团队中的sw-toolbox库来帮助您缓存不同的资源。