diff --git a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue index 14b94c6ae..c4c1fcd7b 100644 --- a/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue +++ b/plugin-designs/doxa-maps-spa/doxa-maps-spa.vue @@ -660,6 +660,26 @@ function assertNoDuplicateTabKeys(navModel) { return dupes } +// ★ FRESH BUNDLES AFTER A DEPLOY, AT THE SAME URLs (2026-10-02). A host that serves the tree with Last-Modified and no +// Cache-Control (the DX Life landing does) lets a browser run its cached copies for hours: measured, a typed-URL revisit +// after a deploy requested NONE of the gallery, the manifest or the bundles, so a returning reader ran the old files, or +// an old manifest against a new bundle. A version query cannot fix it here: loadScriptOnce keys its registry by the full +// href, so X.js?v= beside a composite's plain X.js would run the bundle twice. So the manifest is always revalidated, and +// when its fingerprint (every bundle's integrity) differs from this reader's last visit to this tree, every listed bundle +// gets ONE conditional request before any tab mounts: a 304 refreshes the cached copy, and a 200 is cancelled at its +// headers, which drops the stale entry. The plain - + - + \n\n\n" + "script": "\n\n\n" }, "instances": [ { diff --git a/public/dx-maps/manifest.json b/public/dx-maps/manifest.json index 0ef52406d..60e37a682 100644 --- a/public/dx-maps/manifest.json +++ b/public/dx-maps/manifest.json @@ -409,7 +409,7 @@ "bundle": "doxa-maps-spa", "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js", - "integrity": "sha384-6LiR6vjB5GrQ6TfcAVuCU0pon7+MTANx5bWgB0a9RiWqYqBvFZ1DS9XX7/hg07iO", + "integrity": "sha384-D/MCvAZhvdZ4CaVcpxKTxFLdT9GEuHidcKwBImnHSQfvUJg6mkAae/Y5JeUQYUjc", "elements": [ "doxa-maps-spa" ], @@ -439,7 +439,7 @@ "scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js", "embed": { "iframe": "", - "script": "\n\n\n" + "script": "\n\n\n" }, "instances": [ {