Рабочий сервиса Workbox не хранит изображения и ответ API в кеше - PullRequest
0 голосов
/ 04 января 2019

Я использую рабочий сервис Workbox для кэширования изображений и ответов API, создавая собственные кэши для каждого. Хотя я вижу, что маршруты совпадают, но я не вижу ответа, хранящегося в кеше, и работник службы затем запрашивает каждый из ресурсов из сети из-за отсутствия кеша.

Я использовал workbox-webpack-plugin для работника сервиса и записывал собственные стратегии маршрутизации и кэширования в другой файл, который затем передается в конфигурацию плагина.

На той же ноте мои css и js файлы хранятся и обслуживаются нормально.

Я пытался использовать разные стратегии кэширования и обходной путь без плагина webpack, но ни одна из них, похоже, не работает

//Cache JS files
    workbox.routing.registerRoute(
        new RegExp('.*\.js'),
        workbox.strategies.cacheFirst()
    );

//Cache API response
workbox.routing.registerRoute(
     new RegExp('\/api\/(xyz|abc|def)'),
         workbox.strategies.staleWhileRevalidate({
         cacheName: 'apiCache',
             plugins : [
                new workbox.expiration.Plugin({
                    maxEntries: 100,
                    maxAgeSeconds: 30 * 60 // 30 Minutes
                 })
            ]
    })
);

//cache images
workbox.routing.registerRoute(
    new RegExp('(png|gif|jpg|jpeg|svg)'),
    workbox.strategies.cacheFirst({
        cacheName: 'images',
        plugins: [
            new workbox.expiration.Plugin({
                maxEntries: 60,
                maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days
            })
       ]
  })
);

Это конфигурация веб-пакета:

new workboxPlugin.InjectManifest({
    swSrc: 'customWorkbox.js',
    swDest: 'sw.js'
})

1 Ответ

0 голосов
/ 10 января 2019

В соответствии с документами рабочего ящика регулярное выражение для внешнего API должно совпадать с самого начала:

Instead of matching against any part of the URL, the regular expression must match from the beginning of the URL in order to trigger a route when there's a cross-origin request.

...