Ich habe einen Servicemitarbeiter mit workbox 2.0.0 und für einige Seiten, ich bin mit dem workboxSW.strategies.staleWhileRevalidate() Caching-Strategie:Nachbearbeiten Seiteninhalt mit 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
);
Das gut geht, und Ich kann On-the-Fly-Antworten aus dem Cache aktualisieren. Aber ich würde gerne ALLE Antworten ändern, auch wenn sie das erste Mal aus dem Netzwerk kommen (ich muss Javascript einfügen).
Von meinen Tests, cachedResponseWillBeUsed erlaubt nur die Nachbearbeitung der Antwort aus dem Cache (nach dem Methodennamen), aber ich habe noch keinen Weg gefunden, um Zugriff auf Netzwerkantworten zu erhalten (normalerweise die staleWhileRevididate-Strategie zu verwenden).
Irgendwelche Ratschläge?
Vielen Dank
Das ist genau das, was ich getan habe (obwohl es ein bisschen Zeit brauchte, um herauszufinden). – Weeblr
Entschuldigung, drücken Sie die Eingabetaste zu schnell. Es stellte sich heraus, dass es keine so gute Idee war, cachedResponseWillBeUsed zu verwenden, um die Antwort zu modifizieren. Wenn Sie dies tun, können Sie die cacheExpiration-Optionen von WorkBox nicht mehr verwenden, da Sie nur eine cachedResponseWillBeUsed-Methode registrieren können. Eine dedizierte Methode zum Filtern der Antwort wäre also eine gute Idee. – Weeblr