sw.js 758 B

12345678910111213141516171819202122232425262728
  1. const CACHE_NAME = 'runforge-shell-v1'
  2. const APP_SHELL = ['/', '/manifest.webmanifest', '/logo.svg']
  3. self.addEventListener('install', (event) => {
  4. event.waitUntil(
  5. caches.open(CACHE_NAME)
  6. .then((cache) => cache.addAll(APP_SHELL))
  7. .then(() => self.skipWaiting())
  8. )
  9. })
  10. self.addEventListener('activate', (event) => {
  11. event.waitUntil(
  12. caches.keys()
  13. .then((keys) => Promise.all(
  14. keys.filter((key) => key !== CACHE_NAME).map((key) => caches.delete(key))
  15. ))
  16. .then(() => self.clients.claim())
  17. )
  18. })
  19. self.addEventListener('fetch', (event) => {
  20. if (event.request.method !== 'GET' || event.request.mode !== 'navigate') return
  21. event.respondWith(
  22. fetch(event.request).catch(() => caches.match('/'))
  23. )
  24. })