双期环境变量
该配置项用于放置需要同时在浏览器环境和 NodeJs 环境中使用的环境变量,其中的内容会被写入到 sw 中。
对于每一项配置 <KEY>: <value | function(): value>
:<KEY>
是函数名(推荐使用大写下划线式命名),value
是环境变量的值。
环境变量中应对仅包含非函数内容,当填写的配置项为函数时,swpp 会将函数返回的内容插入到环境变量中。
配置项填写的函数的执行环境为 NodeJs,所以不要编写依赖浏览器环境的代码。
例:
import {defineCrossEnv} from 'swpp-backends'
// 该代码将在 sw.js 中插入一系列常量,同时在编译期也可以动态读取
// const EXAMPLE = 'hello swpp'
// const FUN_EXAMPLE = 'fun hello swpp'
defineCrossEnv({
EXAMPLE: 'hello swpp',
FUN_EXAMPLE: function() {
return 'fun ' + this.crossEnv.read('EXAMPLE')
}
})
CACHE_NAME
类型 | 说明 | 默认值 |
---|---|---|
string | 缓存库名称 | kmarBlogCache |
该配置项用于设置 swpp 存储缓存的缓存库的名称,可以更改为任意值,默认设置使用 kmarBlogCache
是历史遗留问题。
请注意:网站部署到线上之后请勿修改该值!除非您知道自己在做什么,否则修改该值可能会造成 swpp 工作异常。
VERSION_PATH
类型 | 说明 | 默认值 |
---|---|---|
string | 版本信息地址 | https://id.v3/ |
该配置项用于设置版本信息存储的地址,因为 swpp 将版本信息封装为 Response
存储到 Cache
当中,所以需要一个模拟的链接来作为 key
。此链接设置为一个网站不可能访问的地址即可,一定要以 /
结尾。
注意:网站部署到线上后请勿修改该值!除非您知道自己在做什么,否则修改该值可能会造成 swpp 工作异常。
ESCAPE
类型 | 说明 | 默认值 |
---|---|---|
number | 逃生门版本号 | 0 |
该配置项用于设置逃生门的版本号,用户的逃生门信息会存储到版本信息当中,当用户本地的逃生门与设置的逃生门版本号不同时就会触发逃生门。
swpp 进行增量更新的原理是网站 DOM 端在启动时发送一个消息到 SW 端,SW 收到信息后开始进行更新操作。如果用户错误地修改了 DOM 端的代码,导致无法发送信息到 SW 端将导致 swpp 永远无法进行增量更新。此时如果对 DOM 的 JS 使用了无限期缓存,将会产生一个死循环:“修复 DOM JS 需要增量更新,但是增量更新又需要已有的 DOM JS 工作正常”。
逃生门的作用就是为了解决上述问题,当用户由于修改 DOM JS 或其它操作产生了无法修复的问题时,可以通过逃生门强制清除用户本地缓存的所有数据。
注意:只要用户的版本号和设置的版本号不相等就会触发逃生门。
INVALID_KEY
类型 | 说明 | 默认值 |
---|---|---|
string | 缓存失效标识的 key | X-Swpp-Invalid |
swpp 使缓存失效的原理是将失效的缓存打上一个失效标记,读取缓存时检查是否存在失效标记,如果存在则尝试通过网络拉取最新的内容然后替换缓存,拉取失败则继续使用缓存的内容。
该配置项用于修改 swpp 使用的 key,这个 key 是存储在响应头当中的,所以必须是一个合法的 HTTP 响应头名称。
注意:网站部署到线上后请勿修改该值!除非您知道自己在做什么,否则修改该值可能会造成 swpp 工作异常。
STORAGE_TIMESTAMP
类型 | 说明 | 默认值 |
---|---|---|
string | 缓存时间戳的 key | X-Swpp-Time |
swpp 实现定期缓存的原理是在响应头中存储一个时间戳,该配置项用于修改 swpp 使用的响应头的名称。
注意:网站部署到线上后请勿修改该值!除非您知道自己在做什么,否则修改该值可能会造成 swpp 工作异常。
UPDATE_CD
类型 | 说明 | 默认值 |
---|---|---|
number | 检查更新的最短时间间隔(毫秒) | 600000 |
该项用于设置检查更新的最短时间间隔,当第二次更新与第一次更新时间之差小于该值时,将会取消第二次更新,避免用户频繁刷新时不停的进行更新。
UPDATE_JSON_URL
类型 | 说明 | 默认值 |
---|---|---|
string | 版本文件所在 URL | 省略 |
该项自动生成,仅用于向 sw 中插入数据,不要手动填写。