服务工作者能做什么而网络工作者不能?或相反亦然?
似乎网络工作者是服务工作者功能的一个子集。这个对吗?
它们的用途有很大不同:
网络工作者
Web Workers 为 Web 内容在后台线程中运行脚本提供了一种简单的方法。工作线程可以在不干扰用户界面的情况下执行任务。此外,它们可以使用 XMLHttpRequest 执行 I/O(尽管 responseXML 和 channel 属性始终为空)。一旦创建,worker 可以通过将消息发送到该代码指定的事件处理程序来将消息发送到创建它的 JavaScript 代码(反之亦然)。
来源 - 使用 Web Workers
服务工作者
服务工作者本质上充当位于 Web 应用程序、浏览器和网络(如果可用)之间的代理服务器。它们旨在(除其他外)能够创建有效的离线体验,拦截网络请求并根据网络是否可用以及更新的资产是否驻留在服务器上采取适当的行动。他们还将允许访问推送通知和后台同步 API。
源 - 服务工作者 API
因此,Web Worker 可以方便地运行昂贵的脚本而不会导致用户界面冻结,而 Service Worker 可用于修改来自网络请求的响应(例如,在构建离线应用程序时)。