@serwist/next
Version:
A module that integrates Serwist into your Next.js application.
34 lines (33 loc) • 1.11 kB
JavaScript
self.onmessage = async (ev)=>{
switch(ev.data.type){
case "__START_URL_CACHE__":
{
const url = ev.data.url;
const response = await fetch(url);
if (!response.redirected) {
const startUrlCache = await caches.open("start-url");
return startUrlCache.put(url, response);
}
return Promise.resolve();
}
case "__FRONTEND_NAV_CACHE__":
{
const url = ev.data.url;
const pagesCache = await caches.open("pages");
const isPageCached = !!await pagesCache.match(url, {
ignoreSearch: true
});
if (isPageCached) {
return;
}
const page = await fetch(url);
if (!page.ok) {
return;
}
pagesCache.put(url, page.clone());
return Promise.resolve();
}
default:
return Promise.resolve();
}
};