服务工作者中的动态缓存名称



我想知道如何使用动态cacheName?基本上,我希望能够清除特定url的缓存。所以我想我可以创建一个名为formA、formB等的缓存。。。填写表单后,我想清除/删除该缓存。

情况:我有两个表单,他们共享css、js,还共享serviceworker等……但我希望能够让它们离线可用。所以我想把它们保存在缓存中,比如";formA高速缓存";以及";formB高速缓存";,缓存相应的表单资产。

当它们被填充时,提交它们,并从缓存中清除它们。

这是我现在的服务人员,正在使用Google Workbox。

importScripts(
"https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js"
);

const { skipWaiting, clientsClaim } = workbox.core;
const { registerRoute } = workbox.routing;
const { NetworkFirst } = workbox.strategies;

skipWaiting();
clientsClaim();

workbox.precaching.precacheAndRoute([
"/etc.clientlibs/fd/af/runtime/clientlibs/guideRuntime/resources/images/busy-state.gif",
"/etc.clientlibs/fd/af/runtime/clientlibs/widgets/numericStepper/resources/images/Minus.svg",
"/etc.clientlibs/fd/af/runtime/clientlibs/widgets/numericStepper/resources/images/Plus.svg",
"/etc.clientlibs/fd/rte/gui/components/clientlibs/core/resources/List_a.svg",
"/etc.clientlibs/fd/rte/gui/components/clientlibs/core/resources/List_ordered.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Accordion-Add-Default.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Accordion-Delete-Default.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Chevron-Active.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Chevron-Right-Hover.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Chevron-Right-White.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Minus.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Minus_Hover.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Plus.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Plus_Hover.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Save.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Submit-Hover.svg",
"/etc/clientlibs/fd/themes/dev-team-theme/assets/Table-Edit-Default.svg",
]);

registerRoute(
({ request }) => {
console.log("    ", request.url);
return (
request.destination === "iframe" ||
request.destination === "document" ||
request.destination === "image" ||
request.destination === "script" ||
request.destination === "style" ||
request.destination === "font"
);
},
new NetworkFirst({
cacheName: "abc-forms", // This needs to become formA-cache, formB-cache etc...
})
);

欢迎任何帮助或想法!

感谢

马里奥

虽然您可以为所有URL创建一个命名缓存,但我不建议这样做。相反,编写一个缓存无效例程来清除缓存版本并替换为新版本。

只要你知道它在哪个命名的缓存中,那么你就可以缓存新版本,它将取代旧版本。

如果您不知道缓存了响应的命名缓存,那么您将需要遍历所有命名缓存,以查看是否缓存了响应。基本上找到目标命名缓存。

最新更新