如何解决从工作箱路由中排除路径
我有一个使用 WorkBox 构建的自定义 Service Worker。这在 wordpress 站点上使用,并且在发生更新(使用核心或插件)时会不断在后端引起问题。我想配置我的代码,以便当用户在 /wp-admin
页面上时,Service Worker 不提供缓存文件。因为我无法检查 window.location
,所以我无法弄清楚如何执行此操作。
明确地说,我不一定要从缓存中排除 /wp-admin
脚本,我特别希望在用户位于 /wp-admin
页面时停止提供缓存文件。这在 99% 的情况下都是相同的,但对于用户在前端并提供 wp-admin 脚本的假设情况,我希望从缓存中提供该脚本。
我的脚本如下。我怎样才能实现我的目标?
import { clientsClaim,skipwaiting } from "workBox-core";
import { ExpirationPlugin } from "workBox-expiration";
import { precacheAndRoute } from "workBox-precaching";
import { registerRoute,setCatchHandler } from "workBox-routing";
import { CacheFirst,NetworkFirst } from "workBox-strategies";
skipwaiting();
clientsClaim();
/**
* Precache "offline" page
*/
precacheAndRoute([
{
url: "/offline/",revision: __VERSION__,},]);
/**
* Return "offline" page when visiting pages offline that haven't been cached
*/
setCatchHandler(() => {
return caches.match("/offline/");
});
/**
* Cache wordpress content
*/
registerRoute(
({ url }) => {
return (url.pathname && !url.pathname.match(/^\/(wp-admin|wp-content|wp-includes|wp-json|wp-login)/) && url.pathname.match(/\/$/));
},new NetworkFirst({
cacheName: "clpl-content-cache",plugins: [
new ExpirationPlugin({
maxAgeSeconds: 7 * 24 * 60 * 60,}),],})
);
/**
* Cache CSS files
*/
registerRoute(
({ url }) => {
return (url.pathname && url.pathname.match(/\.css$/) && !url.pathname.match(/wp-admin|wp-includes|wp-json/));
},new CacheFirst({
cacheName: "clpl-css-cache",})
);
/**
* Cache JS files
*/
registerRoute(
({ url }) => {
return (url.pathname && url.pathname.match(/\.js$/) && !url.pathname.match(/wp-admin|wp-includes|wp-json/) && !url.pathname.match(/redirection/));
},new CacheFirst({
cacheName: "clpl-js-cache",})
);
/**
* Cache image files
*/
registerRoute(
({ url }) => {
return (url.pathname && url.pathname.match(/\.gif|jpeg|jpg|png|svg|webp$/) && !url.pathname.match(/wp-admin|wp-includes|wp-json/));
},new CacheFirst({
cacheName: "clpl-image-cache",})
);
/**
* Cache font files
*/
registerRoute(
({ url }) => {
return (url.pathname && url.pathname.match(/\.otf|ttf|woff|woff2$/) && !url.pathname.match(/wp-admin|wp-includes|wp-json/));
},new CacheFirst({
cacheName: "clpl-font-cache",})
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。