Service Worker Plus Plus
什么是 swpp
swpp 是一个用于为网站快速生成一个高度可用的 Service Worker (opens in a new tab) 的工具,旨在提高网站的可靠性、优化二次访问性能、提供离线浏览功能……
常用 SW 构建工具的对比:
| swpp@3 | swpp@2 | hexo-offline | |
|---|---|---|---|
| 本地缓存 | ✔️ | ✔️ | ✔️ |
| 缓存增量更新 | ✔️ | ✔️ | ❌ |
| 缓存过期时间 | ✔️ | ❌ | ✔️ |
| 缓存大小限制 | ❌ | ❌ | ✔️ |
| 预缓存 | ❌ | ❌ | ✔️ |
| Request 篡改 | ✔️ | ✔️ | ❌ |
| URL 竞速 | ✔️ | ✔️ | ❌ |
| 备用 URL | ✔️ | ✔️ | ❌ |
| 204 阻塞响应 | ✔️ | ✔️ | ❌ |
| 逃生门 | ✔️ | ✔️ | ❌ |
| 请求合并 | ❌ | ✔️ | ❌ |
| 高度自由 | ✔️ | ✔️ | ❌ |
| 更新 | 活跃 | 停止维护 | 超过两年没有更新 |
swpp v2 与 v3 的区别
swpp v3 对 swpp 的所有代码进行了完全的重构,现在代码逻辑更加的清晰。除了后台代码的差异,v3 还有以下一系列的改进:
-
完全定制化
现在您对 swpp 生成的 sw 拥有完全的控制权。在 v2 中,如果需要修改插件生成的 sw 的逻辑,您需要自行编写整个 sw 文件。
v3 中将 sw 文件的各个部分拆分到了环境变量中,这使得您可以通过配置文件覆盖 sw 文件中的任意一个部分,或者追加任意内容。 -
现代化配置
现在您可以使用ts语言编写配置文件,同时还可以选择使用ESM。在 v2 中您必须使用CommonJS。
同时使用内置的一系列define函数可以让您对配置的颗粒度进行更加完美的掌控。 -
完善的类型
现在 swpp 提供了更加优雅的数据类型,以优化编写配置项、二次开发时的体验。
约定
在正式开始前您需要知道下面的事:
- 本文档统一使用
npm指令,您可根据喜好替换为自己使用的命令。 - 在使用 swpp 之前您应当具备 ts/js 的部分知识,否则您可能会遇到一些麻烦。
- swpp 分为前后端实现,如不特别声明,均指后端实现。本文档是后端实现的文档。
- 文档中的示例代码中出现的
// noinspection xxx注释用于在编写文档时消除 IDE 警告,不需要 CV 走。
版本号
目前 swpp v3 还在测试阶段,版本号全部采用 3.0.0-alpha.<a><b><c> 的格式:
3.0.0- 大版本号alpha- 测试版本a- 一级子版本号,变动时表明 API 或配置文件等内容发生了不向前兼容的变动b- 二级子版本号,变动时表明添加了新的功能c- 三级子版本号,变动时表明进行了漏洞修复
当 a b c 的某一位达到两位数时,会在其中添加 x 表示分割。
历史文档
本文档不保存历史版本,因为本人永远推荐用户使用最新版的 swpp,旧版的 swpp 很可能是不安全的。
QQ 群
注意:swpp 有且仅有下面的群是官方的:
