Skip to content

Commit b5129c4

Browse files
committed
Demo 3: Estrategias de cache mixtas
- Cache First para assets estaticos (CSS, JS, imagenes, fonts) - Network First para navegacion HTML con fallback offline
1 parent 1bec7b0 commit b5129c4

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

app/views/pwa/service-worker.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,32 @@ self.addEventListener("activate", (event) => {
2222
self.clients.claim()
2323
})
2424

25-
// 3. Fetch: si falla una navegacion, mostrar offline.html
25+
// 3. Fetch: estrategia mixta
2626
self.addEventListener("fetch", (event) => {
27+
const url = new URL(event.request.url)
28+
29+
// Assets estaticos: Cache First (instantaneo)
30+
if (url.pathname.match(/\.(css|js|png|jpg|svg|woff2)$/)) {
31+
event.respondWith(
32+
caches.match(event.request).then((cached) => {
33+
if (cached) return cached
34+
return fetch(event.request).then((response) => {
35+
const clone = response.clone()
36+
caches.open(CACHE_NAME)
37+
.then((cache) => cache.put(event.request, clone))
38+
return response
39+
})
40+
})
41+
)
42+
return
43+
}
44+
45+
// Navegacion HTML: Network First con fallback offline
2746
if (event.request.mode === "navigate") {
2847
event.respondWith(
2948
fetch(event.request)
3049
.catch(() => caches.match("/offline.html"))
3150
)
51+
return
3252
}
3353
})

0 commit comments

Comments
 (0)