Я бы рекомендовал следовать подходу, описанному в этой статье " Стратегии кэширования сервисных работников на основе типов запросов ", и использовать request.destination
внутри обработчика fetch
, чтобы выяснить, какие запросы выполняются для изображений.
self.addEventListener('fetch', (event) => {
if (event.request.destination === 'image') {
event.respondWith(/* your caching logic here */);
}
// If you don't call event.respondWith() for some requests,
// the normal loading behavior will be used by default.
};
Возможно, что запрос изображения может быть загружен через что-то вроде XMLHttpRequest, в этом случае значение request.destination
, вероятно, не будет установлено правильно. Если это так, я бы рекомендовал просто проверить ту часть URL, которая, по вашему мнению, скорее всего будет уникальной, с помощью сравнения строк.
self.addEventListener('fetch', (event) => {
const url = new URL(event.request.url);
if (url.origin.includes('maps.google')) {
event.respondWith(/* your caching logic here */);
}
// If you don't call event.respondWith() for some requests,
// the normal loading behavior will be used by default.
};