前端网络协议面试题
目录

请解释 Service Workers 的生命周期

· 约 4 分钟读完 · 第 61 / 184 章

推荐答案

Service Workers 的生命周期包括以下几个阶段:

  1. 注册(Registration):通过 navigator.serviceWorker.register() 方法注册 Service Worker 脚本。注册成功后,Service Worker 进入安装阶段。

  2. 安装(Installation):在安装阶段,Service Worker 会触发 install 事件。开发者可以在这个阶段缓存静态资源,确保离线可用。

  3. 激活(Activation):安装完成后,Service Worker 进入激活阶段,触发 activate 事件。在这个阶段,开发者可以清理旧的缓存资源。

  4. 等待(Waiting):如果已经有其他 Service Worker 在控制页面,新的 Service Worker 会进入等待状态,直到所有客户端都关闭或手动跳过等待。

  5. 控制(Control):一旦激活成功,Service Worker 将控制页面,并开始拦截网络请求。

  6. 终止(Termination):当不再需要时,Service Worker 会被浏览器终止以节省资源。

本题详细解读

1. 注册(Registration)

Service Worker 的生命周期从注册开始。通过调用 navigator.serviceWorker.register() 方法,开发者可以注册一个 Service Worker 脚本。注册成功后,浏览器会下载并解析该脚本。

2. 安装(Installation)

在安装阶段,Service Worker 会触发 install 事件。开发者可以在这个阶段缓存静态资源,以便在离线时使用。

3. 激活(Activation)

安装完成后,Service Worker 进入激活阶段,触发 activate 事件。在这个阶段,开发者可以清理旧的缓存资源。

4. 等待(Waiting)

如果已经有其他 Service Worker 在控制页面,新的 Service Worker 会进入等待状态,直到所有客户端都关闭或手动跳过等待。

5. 控制(Control)

一旦激活成功,Service Worker 将控制页面,并开始拦截网络请求。

6. 终止(Termination)

当不再需要时,Service Worker 会被浏览器终止以节省资源。开发者可以通过 self.clients.claim() 方法立即控制所有客户端。