首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CacheAPI或IndexedDB的服务工作者是否可以下载大型数据集?

使用CacheAPI或IndexedDB的服务工作者是否可以下载大型数据集?
EN

Stack Overflow用户
提问于 2019-01-31 13:08:39
回答 1查看 1K关注 0票数 0

我有以下情况:我正在开发一个具有以下属性的小型web应用程序:

  • 必须离线使用(在小区接收能力差的地区供户外使用)
  • 联机时,每个用户“生成”他/她自己的脱机内容,这些内容放置在服务器上的每个用户的公开可用文件夹中。这个内容(图像集,每个用户最多40 is,要具体)是应用程序有任何用处所必需的。

第一点很好,服务工作者正是我所需要的东西,因为他们会下载并缓存我的应用程序逻辑,但是我很难弄清楚,我是否应该或者甚至可以使用服务工作者来满足最后的需求。据我所知,服务工作者具有以下属性:服务工作者的结构(包括什么)是在应用程序构建步骤中确定的,不能在运行时更改或修改,即使是这样,我也不能为不同的用户生成不同的服务工作者,对吗?

还有别的办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-31 21:31:15

除了web应用程序的HTML/JS/CSS之外,您还可以使用Cache Storage为用户缓存其他内容。缓存存储API在全局对象上作为caches公开给客户端网页和服务工作人员内部。

例如,您可以在web应用程序的代码中进行以下调用:

代码语言:javascript
运行
复制
async function cacheAdditionalUrls(urls) {
  const cache = await caches.open('my-custom-cache');
  await cache.addAll(url);
  // At this point, 'my-custom-cache' will contain all of the urls.
  // You can read from this cache from the service worker.
}

在您的服务工作者中,您可以从'my-custom-cache'中读取以满足匹配请求。您提到您使用的是vue-cli的PWA插件,它构建在工作箱之上。要使用工作框中的缓存数据,可以在工作箱配置中实现规则,如下所示:

代码语言:javascript
运行
复制
pwa: {
  workboxOptions: {
    // Add in other options as needed.
    runtimeCaching: [{
      urlPattern: new RegExp('path/prefix/for/images'),
      handler: 'cacheFirst',
      options: {
        cacheName: 'my-custom-cache'
      }
    }]
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54461346

复制
相关文章

相似问题

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