У меня есть работник службы, использующий workbox 2.0.0, и для некоторых страниц я использую стратегию кэширования workboxSW.strategies.staleWhileRevalidate ():
const customFilter = {
cachedResponseWillBeUsed: function (input) {
try {
console.log('cacheResponseWillBeUsed for : ' + input.request.url);
// modify the response body here
} catch (e) {
console.error(e);
}
return input.cachedResponse;
},
requestWillFetch: function (input) {
try {
console.log('requestWillFetch for ' + input.request.url);
} catch (e) {
console.error(e);
}
return input.request;
},
fetchDidFail: function (input) {
console.log('A fetch request for ' + input.request.url + ' failed.');
}
}
const cachingStrategy = workboxSW.strategies.staleWhileRevalidate({
plugins: [
customFilter
]
});
workboxSW.router.registerRoute(
new RegExp('\/(.*)/suffix/?$'),
cachingStrategy
);
Все идет хорошо, и я могу оперативно обновлять ответы, полученные из кеша. Но я хотел бы изменить на лету ВСЕ ответы, в том числе когда они получены из сети в первый раз (мне нужно вставить в них какой-то javascript).
Из моего тестирования cachedResponseWillBeUsed позволяет только постобработку ответа из кеша (в соответствии с именем метода), но я еще не нашел способа получить доступ к сетевым ответам (в противном случае я все еще использую стратегию staleWhileRevalidate).
Любой совет?
Большое спасибо