fix(sw): v6 with network-first HTML strategy

- Bump cache to nexus-pos-v6 to force invalidation
- HTML pages now use network-first instead of cache-first
  This ensures users always get the latest HTML with correct
  JS/CSS references (?v=3) instead of stale cached HTML
- Remove HTML pages from APP_SHELL precache (only static assets)
- Keep cache-first for JS/CSS/images
This commit is contained in:
2026-05-14 22:26:27 +00:00
parent 521455f156
commit 30abecc07d

View File

@@ -1,20 +1,10 @@
// /home/Autopartes/pos/static/pwa/sw.js // /home/Autopartes/pos/static/pwa/sw.js
// Nexus POS — Service Worker v5 // Nexus POS — Service Worker v6
// Self-contained vanilla JS. No external imports. // Self-contained vanilla JS. No external imports.
const CACHE_NAME = 'nexus-pos-v5'; const CACHE_NAME = 'nexus-pos-v6';
const APP_SHELL = [ const APP_SHELL = [
'/pos/login',
'/pos/sale',
'/pos/catalog',
'/pos/inventory',
'/pos/customers',
'/pos/invoicing',
'/pos/accounting',
'/pos/dashboard',
'/pos/config',
'/pos/reports',
'/pos/static/css/tokens.css', '/pos/static/css/tokens.css',
'/pos/static/css/common.css', '/pos/static/css/common.css',
'/pos/static/js/app-init.js', '/pos/static/js/app-init.js',
@@ -132,8 +122,8 @@ self.addEventListener('fetch', function (event) {
return; return;
} }
// Don't cache login page // HTML pages -> network-first (always fresh)
if (url.pathname === '/pos/login' || url.pathname === '/pos/login/') { if (req.headers.get('accept') && req.headers.get('accept').indexOf('text/html') !== -1) {
event.respondWith(networkFirst(req)); event.respondWith(networkFirst(req));
return; return;
} }
@@ -181,7 +171,7 @@ self.addEventListener('fetch', function (event) {
return; return;
} }
// Everything else -> cache-first // Everything else (JS, CSS, images) -> cache-first
event.respondWith(cacheFirst(req)); event.respondWith(cacheFirst(req));
}); });