javascript - Ta bort __WB_REVISION__ frågesträng från URL:er som förhandslagrats av WorkBox
Jag behöver helt ta bort __WB_REVISION__ frågesträngar från URL:er som förcachats av Workbox.
Mitt projekt körs under mycket strikta regler, och backend kommer att skapa unika cacheposter för varje förfrågan med olika frågesträngar. Detta skapar ett problem när förhandslagring behöver lägga till frågesträngar med revisionsinformation.
Jag har redan försökt använda en enklare service-worker, men eftersom vi använder webpack med split chunks har vi stött på så många import() och window-objektproblem att workbox var vägen att gå.
Jag har redan försökt göra precache för hand via workbox.precaching.precacheAndRoute(). Alla förslag uppskattas.
workbox-konfiguration (webpack.config.js):
new WorkboxPlugin.InjectManifest({
swSrc: "./assets/js/pwa/worker.js",
swDest: "sw.js",
precacheManifestFilename: "precache.[manifestHash].js",
excludeChunks: ["main", "page", "login"]
include: [
/(vendor).*\.js(?=\?|$|)/,
/\.(woff2)(?=\?|$|)/,
/(?=sprite)\.(svg)(?=\?|$|)/,
],
})
worker.js:
const cacheableResponse = {
statuses: [0, 200]
};
const offlinePage = "offline.html";
workbox.precaching.precacheAndRoute([offlinePage]);
workbox.routing.registerRoute(/\/$|(.html?)$/, new workbox.strategies.NetworkOnly());
workbox.routing.setCatchHandler(({ event }) => {
return caches.match(offlinePage);
});
workbox.precaching.precacheAndRoute(self.__precacheManifest);
REDIGERA: Att lägga till koden nedan i webpack-konfigurationen verkar ha löst det, men känns lite hackigt
manifestTransforms: [
originalManifest => {
return (manifest = originalManifest.forEach(entry => delete entry.revision));
}
]
Svar #1
Det korrekta sättet att göra detta är att använda dontCacheBustURLsMatching-alternativet i plugin-konfigurationen. Det tar ett reguljärt uttryck som matchar mot URL:er som ska förladdas. Standardvärdet är null (matchar inget) men du kan konfigurera det så att det matchar vilka resurser du vill. Med detta kan du matcha alla resurser som redan inkluderar hash för filinnehållet i deras namn. Med andra ord, med detta alternativ kan du säga "filer som matchar detta reguljära uttryck ska inte ha revisionsinformation i förhandsladdningsmanifestet".
Mer i dokumentationen här: https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin