调试指南

本地及线上调试方法

  本篇将介绍如何在浏览器中观察和调试 SW 的功能。

开发者工具

  在大部分浏览器中,均可使用 F12 打开开发者工具(edge 可使用 ctrl + shift + I),我们在浏览器中的调试也全部在这个开发者工具中进行。

网络观察

  在 网络 一栏中,我们可以监视当前网页的所有网络活动,也可以限制当前页的网络速度,具体的功能您可以自行探索。

  如果您启用了 swpp 中与网络请求相关的功能(如本地缓存、备用 URL等),那么在网络信息中,就能发现部分请求出现了两次:

网络信息示例

  仔细观察就会发现这两个请求并不完全相同,主要区别在于一个是 kms.js 发起的,另一个是 sw.js 发起的,同时可以发现其中一个请求的“履行者”一栏写的是“ServiceWorker”。

  当“履行者”一栏值为“ServiceWorker”时,表明该请求被 SW 拦截并代理,具体的操作由 SW 完成;当文件名左侧出现一个齿轮图标(或“发起者”是 SW 的 js 文件)时,表明该请求由 SW 发起。

  如果一个请求被 SW 代理,但在网络请求中却找不到 SW 发起的请求,那么表明该请求走了本地缓存,直接从本地中读取了值。

观察 SW

  在 应用程序 > Service workers 一栏中,就可以观察到 SW 的注册情况:

观察 SW 注册情况

  这里主要列出了 SW 当前的状态,“来源”后如果出现红色叉号,表明 SW 文件当前或历史运行过程中出现过报错(网络报错也会计算在内)。

  同时顶部还有三个选项可以使用,这三个选项的功能如下(这三个功能仅调试时使用):

  • 脱机:禁止当前网页使用互联网(相当于把这个网页的网断了)
  • 重新加载时更新:刷新网页时更新 SW(不勾选的时候 SW 的更新可能会有延迟)
  • 网络旁路:禁止 SW 代理网络请求(打开后所有请求都会绕过 SW)

  该页面中更具体的介绍可以参考:Chrome 文档 (opens in a new tab)

观察缓存

  在 应用程序 > 缓存存储 > 您设置的缓存名称 一栏中,您可以查看 SW 创建的所有缓存信息:

观察缓存

  在这个页面,您还可以手动删除某一个或全部缓存。

调试代码

  在 源代码 > sw.js > 您的域名 > 您设置的 sw 名称 一栏中,您可以查看当前 sw 的代码,并可以进行断点调试。

  具体使用方法参考:Chrome 文档 (opens in a new tab),这里不再赘述。