Как я могу найти, к какому кешу принадлежит ответ работника сервиса?
Учитывая запрос, как я могу выяснить, к какому кешу он принадлежит?match
, несмотря на поиск во всех кешах, даст только кэшированный ответ. Я хотел бы получить как имя объекта кеша / кеша, так и кешированный ответ.
1 ответ
Если вам нужно узнать, в каком кеше находится ответ, боюсь, вам нужно позвонить match
на каждом из кешей индивидуально, пока не найдете тот, где есть совпадение.
Код может выглядеть примерно так:
async function findCachedResponse(request) {
const cacheKeys = await caches.keys();
const openCaches = await Promise.all(cacheKeys.map(cacheKey => caches.open(cacheKey)));
const matches = await Promise.all(openCaches.map(cache => cache.match(request));
const i = matches.findIndex(match => match !== undefined);
if (i !== -1) {
return { cache: cacheKeys[i], response: matches[i] };
} else {
return undefined;
}
}