头像

Cache API

能力检测

1
2
3
if ('caches' in window) {
// 支持
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 打开 / 创建缓存
caches.open('test-cache').then(cache => {
// 一次添加多个缓存
cache.addAll(['/1.png', '/2.png']).then(() => {
console.log('1 and 2 are cached.');
});

// 添加单个缓存
cache.add('/3.png').then(() => {
console.log('3 is cached.');
});
});

// 查看是否存在缓存
caches.has('test-cache').then(flag => {
console.log(flag);
});

// cache.add 方法会自动调用 fetch 获取资源,也可以手动获取资源后使用 cache.put 缓存
fetch('/4.png').then(response => {
return caches.open('test-cache').then(cache => {
return cache.put('/4.png', response);
});
});

caches.open('test-cache').then(cache => {
// 获取 test-cache 下的所有缓存
cache.keys().then(cached => {
console.log(cached);
});
});

caches.open('test-cache').then(cache => {
// 获取 test-cache 下的指定缓存
cache.match('/3.png').then(matched => {
console.log(matched);
});
});

caches
.open('test-cache')
.then(cache => {
// 删除单个缓存
cache.delete('/4.png').then(() => {
console.log('4 is deleted');
});
})
.catch(error => {
console.log(error);
});

// 删除这个命名缓存
caches.delete('test-cache').then(() => {
console.log('test-cache is deleted');
});

参考