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 有且仅有下面的群是官方的: