Service Worker: как кэшировать изображения, которые не имеют расширений, с помощью Workbox - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок в сфере обслуживания на своей странице, у меня есть изображения без расширений [*. Jpg, * .png и т. Д.] как этот "www.domain.com/api/media/a2b93f21-1acf-4e5e-9b19-6d7c68aaadc2", который я получаю из API.

Следующий код работает нормально, но не для изображений этого типа

workbox.routing.registerRoute(
    // Cache image files.
    /\.(?:png|jpg|jpeg|svg|gif)$/,
    // Use the cache if it's available.
    new workbox.strategies.CacheFirst({
        // Use a custom cache name.
        cacheName: 'image-cache',
        plugins: [
            new workbox.expiration.Plugin({
                // Cache only 20 images.
                maxEntries: 20,
                // Cache for a maximum of a week.
                maxAgeSeconds: 7 * 24 * 60 * 60,
            })
        ],
    })
);

Есть предложения?

1 Ответ

0 голосов
/ 22 апреля 2019

с рабочим окном, из руководства -

. Вы можете использовать тип перечисления RequestDestination для назначения стратегии для определения стратегии.Например, когда целью являются данные

:

workbox.routing.registerRoute(
  // Custom `matchCallback` function
  ({event}) => event.request.destination === 'image',
  new workbox.strategies.CacheFirst({
    cacheName: 'image',
    plugins: [
      new workbox.expiration.Plugin({
        maxEntries: 20,
        maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week
      }),
    ],
  })
);

в простом ванильном сервисном работнике, вы можете проверить заголовок подтверждения запроса

if (request.headers.get('Accept').indexOf('image') !== -1) { 
    ... stash in cache ...
} 
...