当前的ServiceWorker设计/实现存在一个基本的设计缺陷,即每个域每个UA只有一个。
但是,我相信Edge虽然迟到了现场,却有专门的SW实例,用于推送,获取等。
有人可以确认Edge实现多个专业的SW实例吗?
编辑1
好吧,它可能是Safari / Webkit但是阅读this它看起来像所有ServiceWorker线程的1个进程加上另一个监视/启动/停止但每个域只有一个同时的SW实例(加上那个狡猾的iFrame逻辑webkit已经开始)
因此,如果Webkit或Edge都没有我的记忆告诉我的话那么这不是一个好的表现吗? (减少SW回收的命中率)
编辑2
第三个想法是,ServiceWorker中的所有内容都是异步或动态的,这意味着Fetch,Push,Travel事件可以全部复用到同一个SW实例而不会降低性能。
哦,好吧,我回到“如果我知道为什么没有人实施TravelManager的东西:-(”
FWIW共享内存缓冲区的WebKit实现肯定需要同步API吗?打破SW设计的主要前提之一?
虽然Edge确实实现了多个服务工作者,但它不支持专业服务工作者进行推送,获取等。