Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
曹智铭
hexo-blog
提交
887e8e1c
H
hexo-blog
项目概览
曹智铭
/
hexo-blog
上一次同步 2 年多
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hexo-blog
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
887e8e1c
编写于
8月 07, 2021
作者:
曹
曹智铭
提交者:
GitHub
8月 07, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Create sw.js
上级
0e003e97
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
100 addition
and
0 deletion
+100
-0
source/sw.js
source/sw.js
+100
-0
未找到文件。
source/sw.js
0 → 100644
浏览文件 @
887e8e1c
// 导入 Workbox
importScripts
(
'
https://cdn.jsdelivr.net/npm/workbox-cdn@5.1.4/workbox/workbox-sw.js
'
);
workbox
.
setConfig
({
modulePathPrefix
:
'
https://cdn.jsdelivr.net/npm/workbox-cdn@5.1.4/workbox/
'
});
const
{
core
,
precaching
,
routing
,
strategies
,
expiration
,
cacheableResponse
,
backgroundSync
}
=
workbox
;
const
{
CacheFirst
,
NetworkFirst
,
NetworkOnly
,
StaleWhileRevalidate
}
=
strategies
;
const
{
ExpirationPlugin
}
=
expiration
;
const
{
CacheableResponsePlugin
}
=
cacheableResponse
;
// 定义 Service Worker 版本
const
cacheVersion
=
'
-210213a
'
;
// 清空其他版本缓存
self
.
addEventListener
(
// 当 Service Worker 被激活
'
activate
'
,()
=>
{
caches
.
keys
().
then
(
keys
=>
{
return
Promise
.
all
(
keys
.
map
(
key
=>
{
// 删除不包含该版本号的所有缓存
if
(
!
key
.
includes
(
cacheVersion
))
return
caches
.
delete
(
key
);
}))
});
}
)
// 开始定义 Workbox
// 定义 workbox 基本信息
core
.
setCacheNameDetails
({
prefix
:
'
曹智铭的网站
'
,
suffix
:
cacheVersion
});
// 清空其他版本信息
core
.
skipWaiting
();
// 抢占 Service Worker 更新
core
.
clientsClaim
();
precaching
.
cleanupOutdatedCaches
();
// 清除预热的过期信息
// 开始编写缓存规则
/*
* 缓存来自 jsdelivr 的资源
* cdn.jsdelivr.net
*
* 使用 CacheFirst 模式,即缓存优先
* 缓存时间: 30d
*/
routing
.
registerRoute
(
/.*cdn
\.
jsdelivr
\.
net/
,
new
CacheFirst
({
fetchOptions
:
{
// 启用CORS跨域
mode
:
'
cors
'
,
credentials
:
'
omit
'
},
plugins
:
[
new
ExpirationPlugin
({
//设置缓存时间
maxAgeSeconds
:
30
*
24
*
60
*
60
,
purgeOnQuotaError
:
true
})
]
})
);
/**
*
* 缓存所有js css文件
*
* 使用 staleWhileRevalidate 模式 (即优先使用缓存,在后台自动更新
* 缓存名称 static-assets-cache
*
*/
routing
.
registerRoute
(
//匹配路径 可使用正则表达式
/.*
\.(
css|js
)
/
,
new
StaleWhileRevalidate
(),
);
/**
*
* 默认路由
*
* 使用 NetworkFirst 网络优先模式,即有网络时网络优先,无网络时调用缓存
*
*/
routing
.
setDefaultHandler
(
new
NetworkFirst
(),
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录