service-worker - Service Worker:如何缓存远程 Web 服务的调用,以便当我再次调用它时,它将从缓存中加载以使我的网站加载更快?
问题描述
如何缓存远程 Web 服务的调用,以便当我再次调用它时,它将从缓存中加载?
const CACHE_NAME = "v1";
const cacheAssests = [
"https://127.0.0.1:7008/ADAASecureapi/rest/v0/strgLookupEntities?limit=10000&onlyData=true&fields=EntId",
"https://127.0.0.1:7008/ADAASecureapi/rest/v0/userAccessMap?onlyData=true&limit=10000",
];
self.addEventListener("install", (e) => {
console.log("Serice Worker is Installed");
e.waitUntil(
caches
.open(CACHE_NAME)
.then((cache) => {
cache.addAll(cacheAssests);
})
.then(() => self.skipWaiting())
);
});
self.addEventListener("activate", () => {
console.log("Serice Worker is activated");
caches.keys().then((cachNames) => {
return Promise.all(
cachNames.map((cname) => {
if (cname !== CACHE_NAME) {
return caches.delete(cname);
}
})
);
});
});
self.addEventListener("fetch", (e) => {
console.log("Servivce Worker is Fetching...");
e.respondWith(
fetch(e.request).catch(() => {
console.log("Now Fetching from CACHE");
return caches.match(e.request);
})
);
});
这是我上面的代码,我使用 install 、 activate 和 fetch 事件侦听器来缓存我的网站
解决方案
推荐阅读
- python - 在 python 中的 globals() 字典中添加一个新的键值对是否被认为是“定义的行为”?
- google-cloud-platform - Google AutoML“.txt to .jsonl”脚本所需的数据格式是什么?
- java - 在 Android Studio 中使用 Switch 启用/禁用 editText
- javascript - 尝试使用 moment.js 格式化字符串并计算时差时奇怪的输出
- javascript - 石头剪刀布编码挑战
- r - 在具有通用列引用的函数中使用 sqldf
- wxpython - 如何删除 MenuBar 中的 Window 下拉菜单?
- python - Python 中的网络爬虫,用于同一网页的多篇文章
- php - 删除 URL 中的空格并使用 htaccess 将所有内容变为小写
- python - Python Multiprocessing - 等到一个进程完成其工作