Service Workers里的CacheStorage和Ca

2016-10-27  本文已影响0人  butterandfly

CacheStorage及Cache定义在Service Workers里。该Specification暂时还是WD状态,下文里所提及的API都可能会有变动。

这两个接口大量地使用了Promise,你必须对Promise有较好的了解。

CacheStorage和Cache,是两个与缓存有关的接口,用于管理当前网页/Web App的缓存;在使用Service Worker时基本都会用到。它们跟数据库有点类似,我们可以用mongodb来打个比喻:

无论在ServiceWorker域或window域下,你都可以用caches来访问全局的CacheStorage。

CacheStorage

既然CacheStorage管理着所有的Cache,那主要功能无非就是增删改查:

需要注意的是,上面所有方法,都返回Promise。

例子

// 删除名为`my-app`的Cache
caches.delete('my-app').then(() => {console.log('Deleted.')})
// 打开名为`my-app`的Cache
caches.open('my-app').then(cache => {
  // 操控cache
})

Cache

Cache是一个类Map的数据结构对象。其键都是一个request(url),而值则是response。
一个Map总会有get(这里是match)、set(这里是put)、deletekeys方法:

除了上述的基本方法外,Cache还提供.add(requestUrl),可以自动取得requestUrl对应的response,然后put进Cache里。

例子

// 得到在Cache里某个url对应的response
cache.match('/users').then(response => {
  // 操控response
})
// 将`/user`及其response添加到缓存里
cache.add('/users').then(() => {console.log('Done.')})
上一篇 下一篇

猜你喜欢

热点阅读