【问题标题】:Using workbox runtime caching, requests are not showing on cache storage on chrome使用工作箱运行时缓存,请求不会显示在 chrome 上的缓存存储中
【发布时间】:2018-03-07 02:06:45
【问题描述】:

我正在使用工作箱运行时缓存来缓存外部调用(materialize.css 就是其中之一)。在我的网络选项卡中,它显示请求来自 serviceWorker(看起来不错):

但是在缓存存储上,我的运行时缓存看起来是空的:

您可以在 chrome 的应用程序选项卡上看到我的 service worker,这是网站:https://quack.surge.sh/

服务工作者代码:

const workboxSW = new self.WorkboxSW();
workboxSW.precache(fileManifest);
workboxSW.router.registerNavigationRoute("/index.html");workboxSW.router.registerRoute(/^https:\/\/res.cloudinary.com\/dc3dnmmpx\/image\/upload\/.*/, workboxSW.strategies.cacheFirst({}), 'GET');
workboxSW.router.registerRoute('https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css', workboxSW.strategies.cacheFirst({}), 'GET');
workboxSW.router.registerRoute('https://res.cloudinary.com/dc3dnmmpx/image/upload/(.*)', workboxSW.strategies.cacheFirst({}), 'GET');

这是预期的行为吗?我对服务人员很陌生,我不确定正确的结果是什么。

【问题讨论】:

    标签: javascript caching service-worker progressive-web-apps workbox


    【解决方案1】:

    根本问题是这些是opaque responses,默认情况下,它们不会与cacheFirst 策略一起使用。

    https://workboxjs.org/how_tos/cdn-caching.html有一些背景

    Workbox 中有日志记录来帮助调试这类事情,但由于它很嘈杂,因此在生产构建中默认情况下不启用它。切换您的 importScripts() 以使用开发版本(例如 importScripts('https://unpkg.com/workbox-sw@2.0.3/build/importScripts/workbox-sw.dev.v2.0.3.js'),或进入 DevTools 并显式设置 workbox.LOG_LEVEL = 'debug' 会为您提供如下日志消息:

    您有几个选项可以让事情按预期工作:

    • 改为workboxSW.strategies.staleWhileRevalidate(),默认支持不透明响应。
    • 使用不透明的回复告诉cacheFirst 策略您可以接受:workboxSW.strategies.cacheFirst({cacheableResponse: {statuses: [0, 200]}})
    • 由于您的第三方 CDN 似乎都支持 CORS,您可以通过 crossorigin 属性为您的 CSS 和图像请求选择 CORS 模式,并且响应将不再是不透明的:<img src='https://cors.example.com/path/to/image.jpg' crossorigin='anonymous'> 或 @ 987654336@

    【讨论】:

    • 非常感谢您的回复,我不知道不透明的回复。我认为 Workbox 文档非常短,因此很难调试此类问题。再次感谢。
    • 在允许缓存不透明 (http 0) 响应时要小心遇到配额问题
    • 谢谢,后台链接好像移到developers.google.com/web/tools/workbox/guides/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2018-05-09
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多