Improved service worker

This commit is contained in:
2017-07-19 06:32:31 +02:00
parent 3ee21850c8
commit d1603fad40
2 changed files with 51 additions and 16 deletions

View File

@ -43,11 +43,29 @@ self.addEventListener("activate", (evt: any) => {
// controlling service worker
self.addEventListener("message", (evt: any) => {
let message = JSON.parse(evt.data)
let url = message.url
let refresh = RELOADS.get(url)
let servedETag = ETAGS.get(url)
// If the user requests a sub-page we should prefetch the full page, too.
if(url.includes("/_/")) {
let fullPage = new Request(url.replace("/_/", "/"))
fetch(fullPage, {
credentials: "same-origin"
})
.then(response => {
// Save the new version of the resource in the cache
let cacheRefresh = caches.open(CACHE).then(cache => {
return cache.put(fullPage, response)
})
CACHEREFRESH.set(fullPage.url, cacheRefresh)
return cacheRefresh
})
}
if(!refresh || !servedETag) {
return
}
@ -73,11 +91,6 @@ self.addEventListener("message", (evt: any) => {
url
}
// If a subpage has refreshed, refresh the main page cache, too.
// if(url.includes("/_/")) {
// }
let cacheRefresh = CACHEREFRESH.get(url)
if(!cacheRefresh) {
@ -91,6 +104,21 @@ self.addEventListener("message", (evt: any) => {
)
})
// self.addEventListener("sync", (evt: any) => {
// console.log(evt.tag)
// let fetches = new Array<Promise<void>>()
// for(let url of BACKGROUNDFETCHES.keys()) {
// }
// console.log("background fetching:", BACKGROUNDFETCHES.keys())
// BACKGROUNDFETCHES.clear()
// evt.waitUntil(Promise.all(fetches))
// })
self.addEventListener("fetch", async (evt: FetchEvent) => {
let request = evt.request as Request
let isAuth = request.url.includes("/auth/") || request.url.includes("/logout")