Preserve legacy cache rules and pin service worker bytes at boot
This commit is contained in:
@@ -41,7 +41,7 @@ export function createAssetManifest(publicDir = './public', { hashing = true, bu
|
||||
}
|
||||
}
|
||||
// Missing public is the historical fixed fallback used by local tests.
|
||||
if (!existsSync(publicDir)) return { manifest: { buildTag: override || 'dev-build', files: {}, groups: {}, contracts: {} }, index: null, sw: null, bytes };
|
||||
if (!existsSync(publicDir)) return { manifest: { buildTag: override || 'dev-build', files: {}, groups: {}, contracts: {} }, index: null, sw: null, swSource: null, bytes };
|
||||
walk(publicDir);
|
||||
const definition = bytes.has('/assets.json') ? JSON.parse(bytes.get('/assets.json').toString()) : {
|
||||
groups: { core: { contract: 1, eager: true, files: [...bytes.keys()].sort() } },
|
||||
@@ -74,10 +74,14 @@ export function createAssetManifest(publicDir = './public', { hashing = true, bu
|
||||
if (sw !== null) files['/sw.js'] = { ...files['/sw.js'], h: assetHash(sw), s: Buffer.byteLength(sw) };
|
||||
if (index !== null) bytes.set('/index.html', Buffer.from(index));
|
||||
if (sw !== null) bytes.set('/sw.js', Buffer.from(sw));
|
||||
return { manifest: { buildTag, files, groups, contracts }, index, sw, bytes };
|
||||
return { manifest: { buildTag, files, groups, contracts }, index, sw, swSource, bytes };
|
||||
}
|
||||
|
||||
export function assetCacheControl(path, version, manifest, hashing = true) {
|
||||
const shortCache = /(^|\/)(fonts|icons)\//.test(path) ? 'public, max-age=2592000' : 'no-cache';
|
||||
// The legacy index route always revalidates; legacy binary delivery ignored v.
|
||||
if (!hashing && path === '/index.html') return 'no-cache';
|
||||
if (!hashing && !/\.(?:js|css|html|json|webmanifest|svg|txt)$/i.test(path)) return shortCache;
|
||||
const current = hashing ? manifest.files[path]?.h : manifest.buildTag;
|
||||
if (version !== undefined) {
|
||||
if (version === current) return 'public, max-age=31536000, immutable';
|
||||
|
||||
Reference in New Issue
Block a user