progressive-web-apps - Workbox Service Worker - 忽略外部 URL 进行缓存?
问题描述
我有一个相当简单的服务工作者,它将缓存我的请求并使用StaleWhileRevalidate
. 我有一些网址可以满足NetworkOnly
我的需要。
workbox.routing.registerRoute('/login/*', new workbox.strategies.NetworkOnly());
我有一个在网站上展示广告所需的广告文件。我不希望它被缓存,所以我添加了一条新路线:
workbox.routing.registerRoute('https://s.nitropay.com/ads-757.js', new workbox.strategies.NetworkOnly());
但是,这会导致服务人员出现问题,无论我为此使用什么工作箱策略,都会导致错误:
Uncaught (in promise) no-response: no-response :: [{"url":"https://s.nitropay.com/ads-757.js"}]
at Object.handle (https://storage.googleapis.com/workbox-cdn/releases/5.0.0/workbox-strategies.prod.js:1:1881)
这导致我在服务人员缓存页面后没有广告。
如何将此 URL 排除在服务工作者中?
pwabuilder-sw.js 文件:
// This is the service worker with the Cache-first network
const CACHE = "pwabuilder-precache";
importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.0.0/workbox-sw.js');
self.addEventListener("message", (event) => {
if (event.data && event.data.type === "SKIP_WAITING") {
self.skipWaiting();
}
});
workbox.routing.registerRoute('https://s.nitropay.com/ads-752.js', new workbox.strategies.NetworkOnly());
workbox.routing.registerRoute('/login/*', new workbox.strategies.NetworkOnly());
workbox.routing.registerRoute('/profile/*', new workbox.strategies.NetworkOnly());
workbox.routing.registerRoute('/logout.php', new workbox.strategies.NetworkOnly());
workbox.routing.registerRoute('/edit-deck/*', new workbox.strategies.NetworkOnly());
workbox.routing.registerRoute('/deckbuilder/*', new workbox.strategies.NetworkOnly());
workbox.routing.registerRoute(
new RegExp('/*'),
new workbox.strategies.StaleWhileRevalidate({
cacheName: CACHE
})
);
解决方案
推荐阅读
- reactjs - Formik Chakra-ui 选择不使用值
- javascript - 更改反应应用程序的父目录
- sql - 解决在触发器上指定的非布尔类型的表达式,用于检查纬度和经度
- ruby-on-rails - Apache Server 未为一个特定路径设置 Content-Type 标头
- neo4j - Neo4j 图算法/节点相似度
- adobe-indesign - 使用 ExtendScript 设计条件文本样式
- javascript - How to create dynamic view in Angular
- javascript - Vue deep watch 无法处理对象属性更改
- python - 在 PyTorch 中为训练数据添加自定义权重
- python - 如何通过另一个 python 脚本循环 python 脚本?