Skip to content
Snippets Groups Projects
Commit 37e1e238 authored by richard.petersen's avatar richard.petersen :sailboat:
Browse files

Improve cache busting

parent b3692a84
No related branches found
No related tags found
No related merge requests found
......@@ -32,7 +32,14 @@ export const loadViteManifests = (() => {
}))
// combine all manifests by keys. With duplicates, last wins
return viteManifests.reduce((memo, manifest) => Object.assign(memo, manifest), {})
const viteManifest = viteManifests.reduce((memo, manifest) => Object.assign(memo, manifest), {})
Object.defineProperty(viteManifest, '__hash__', {
enumerable: false,
writable: true
})
viteManifest.__hash__ = hash(viteManifests)
return viteManifest
}
return function loadViteManifests ({ useCache = true } = {}) {
......@@ -42,19 +49,15 @@ export const loadViteManifests = (() => {
cachePromise = reload()
cachePromise.then(manifests => {
// update cache promise
const newHash = hash(manifests)
const newHash = manifests.__hash__
if (newHash !== lastHash) {
if (lastHash) {
const deps = viteManifestToDeps(manifests)
// asynchronously rewarm the cache
fileCache.warmUp(manifests, deps)
}
lastHash = newHash
Object.defineProperty(manifests, '__hash__', {
enumerable: false,
writable: true
})
manifests.__hash__ = newHash
}
})
lastCacheTime = +new Date()
......@@ -82,13 +85,13 @@ export function viteToOxManifest (viteManifests) {
}
export const getOxManifests = (() => {
let prevViteManifest
let prevHash
let oxManifestCache
return async function getOxManifests () {
const viteManifest = await loadViteManifests()
if (viteManifest !== prevViteManifest) {
if (viteManifest.__hash__ !== prevHash) {
oxManifestCache = viteToOxManifest(viteManifest)
prevViteManifest = viteManifest
prevHash = viteManifest.__hash__
}
return oxManifestCache
}
......@@ -110,13 +113,13 @@ export function viteManifestToDeps (viteManifest) {
}
export const getDependencies = (() => {
let prevViteManifest
let prevHash
let depCache
return async function getDependencies () {
const viteManifest = await loadViteManifests()
if (viteManifest !== prevViteManifest) {
if (viteManifest.__hash__ !== prevHash) {
depCache = viteManifestToDeps(viteManifest)
prevViteManifest = viteManifest
prevHash = viteManifest.__hash__
}
return depCache
}
......@@ -129,17 +132,13 @@ export async function getCSSDependenciesFor (file) {
}
export const getVersion = (() => {
let prevViteManifest
let version
let prevHash
let versionString
return async function getVersion () {
const viteManifest = await loadViteManifests()
if (viteManifest !== prevViteManifest) {
const newVersion = hash(viteManifest)
if (newVersion !== version) {
versionString = `${+new Date()}.${newVersion}`
version = newVersion
}
if (viteManifest.__hash__ !== prevHash) {
versionString = `${+new Date()}.${viteManifest.__hash__}`
prevHash = viteManifest.__hash__
}
return versionString
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment