当前位置: 首页 > 知识库问答 >
问题:

将workbox与CDN一起使用时,缓存存储为空

暴德运
2023-03-14

我正在使用工作箱来缓存我的应用程序外壳。网络选项卡显示请求来自serviceWorker,并且资产在快速检索时肯定会被缓存,即使在离线模式下也是如此:

但是,缓存存储选项卡始终为空:

我试图通过控制台请求相同的资产:

const request = new Request('https://d198jdpljt0zhj.cloudfront.net/assets/bundles/vendor-0332fe450952d0d66900.js', {mode: 'no-cors'});
fetch(request).then(response => console.log(response));

瞧,资产显示:

我担心我错过了一些基本的东西。

顺便说一下,缓存存储在我的本地环境中显示正确,因此我怀疑这是来自CDN的资产的问题。

共有1个答案

翁硕
2023-03-14

这几乎可以肯定是因为你的 CDN 不支持 CORS,并且默认情况下只有某些策略缓存不透明的响应。

您可以使用

workbox.routing.registerRoute(
  new RegExp('^https://third-party.example.com/assets/'), 
  workbox.strategies.cacheFirst({
    cacheName: 'assets-cache',
    cacheableResponse: {
      statuses: [0, 200], // Make sure 0 is included in this list.
    }
  })
);

在 Workbox 的 v2 中有关于此内容的日志记录,但前提是您专门启用了它。

在即将发布的v3版本中,我们更积极地记录这一点,因为这是一个常见的挫折源。

Workbox v3 文档的一部分的草稿将更详细地介绍。

 类似资料:
  • -SSL-灵活 然而,错误仍然存在。有什么想法吗?

  • 我想使用AdminSDK使用firebase存储,因为使用gcd需要付费帐户。 我曾尝试过在没有付费帐户的情况下使用gcd,但除了使用gcd存储非常复杂之外,我没有找到一种方法。 我试图在Firebase留档中找到答案,但提到的功能留档根本不起作用。所以我决定发布这个问题的答案,这样它就可以帮助其他人

  • 我在用Firebase做一个应用程序。 用户上传的照片保存在firebase存储中。 我使用firebase cloud函数制作缩略图以更快地加载照片, 如何将firebase存储与google cloud CDN集成??

  • 根据 workbox 文档,应将跨域请求配置为确保正则表达式与 URL 的开头匹配。但是,它不起作用。 服务人员代码如下所示。 在页面中,来自同源资源的响应被缓存,但来自< code > https://a248 . e . akami . net 的响应不被缓存。 我的配置有什么问题吗?还是这是一个工作箱3.0.0错误?

  • 问题内容: Jenkins中建立一个托管在bitbucket上的项目时,我将在URL字段中输入什么? 该存储库是私有的。 问题答案: 我对Jenkins并不熟悉,但是Bitbucket允许您通过https克隆git存储库,https可以接受密码作为url的一部分,如下所示:

  • 我是Gradle/Groovy的新手,所以我可能遗漏了一些显而易见的东西。你能帮忙吗? 我们使用Ivy进行依赖管理。我正在试用Gradle,希望与我们现有的常春藤基础设施集成。通常情况下,这应该是可能的,但我们的常春藤的布局有点特别,而且...我不能让它工作。 这是因为我们的常春藤在布局时考虑了组织的url,例如: 我现在试着把这句话翻译成Gradle: 这当然是失败的,因为“[organizat