首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Workbox的动态缓存

使用Workbox的动态缓存
EN

Stack Overflow用户
提问于 2018-06-06 19:37:22
回答 1查看 1.4K关注 0票数 3

我使用工作箱路由进行动态缓存。我不想给修复url,因为它将改变基于用户的交互。我怎样才能做到这一点?我像下面这样使用这个,但是它是用一个状态修正的

代码语言:javascript
复制
let BASE_URL = location.protocol + "//" + location.host,
    API_URL = BASE_URL + '/ab/abc/api/'

我想缓存所有具有/ab/abc/api/的url

代码语言:javascript
复制
workbox.routing.registerRoute(API_URL, workbox.strategies.networkFirst({
  cacheName: 'abc',
  plugins: [
    new workbox.expiration.Plugin({
      maxEntries: 1
    }),
    new workbox.cacheableResponse.Plugin({
      statuses: [200]
    })
  ]

(});

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 16:51:25

关于Workbox的路由是如何工作的,在文件中还有更多的背景知识。

但是,要回答您的特定问题,您可以创建一个基于正则表达式的匹配路由,该正则表达式只需要匹配传入URL的一部分(例如,匹配公共前缀或后缀)。

假设您的公共前缀是/ab/abc/api/,并且实际的API调用是针对该路径下存在的URL(例如,/ab/abc/api/entries/ab/abc/api/latest?t=1等),则可以创建如下所示的路由:

代码语言:javascript
复制
workbox.routing.registerRoute(
  new RegExp('/ab/abc/api'),
  workbox.strategies.networkFirst({
    cacheName: 'abc',
    plugins: [
      new workbox.expiration.Plugin({
        maxEntries: 50
      })
    ]
}));

我在那里更改的另一件事是缓存过期的maxEntries。与RegExp匹配的每个唯一URL都将获得自己的缓存条目,如果您将maxEntries设置为1,那么您将只缓存最后使用的URL,每次之后所有其他条目都过期。我假设把它设置为更高的东西(我用了50,但对你有意义的东西)更符合你的意愿。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50728269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档