Я использую рабочую коробку (v4.1) для создания ServiceWorker, который обслуживает общее резервное изображение, если запрошенное изображение не может быть получено
Работает так, как предназначено для Google Chrome.
Проблема заключается в том, что если изображение не может быть получено, вместо этого отображается мой ошибочный результат, Safari кэширует запасной вариант и не будет пытаться снова извлечь изображение при следующих запросах.
workbox.routing.registerRoute(
/\.(?:png|jpg|jpeg|svg|gif|webp)$/,
new workbox.strategies.StaleWhileRevalidate({
cacheName: 'image-cache',
plugins: [
new workbox.expiration.Plugin({
maxAgeSeconds: 7 * 24 * 60 * 60,
})
],
})
);
// Fallbacks
workbox.routing.setCatchHandler(({event}) => {
switch (event.request.destination) {
case 'image':
fallbackImage = caches.match(workbox.precaching.getCacheKeyForURL('Images/fallback.svg'));
return fallbackImage;
break;
case 'document':
return caches.match(workbox.precaching.getCacheKeyForURL('/Html/offline.html'));
break;
default:
return Response.error();
}
});
Как я могу убедиться, что запасной вариант не кэшируется в Safari, и при перезагрузке страницы отображается правильное изображение?
Я пытался изменить заголовок кеша на "no-store", когда запасной вариант обслуживается, но у меня не получилось?
Есть ли способ поместить изображения (которые были заменены запасными) в их собственный кэш с очень коротким сроком действия?
Любая помощь будет очень ценится:)