add cache-busting

This commit is contained in:
Nystik
2026-03-22 18:50:23 +01:00
parent 1a0d749c68
commit 50f0263165
3 changed files with 44 additions and 4 deletions

View File

@@ -72,6 +72,20 @@ app.use("/vault-files", (req, res, next) => {
express.static(vaultPath)(req, res, next);
});
// Serve dist files with cache headers based on version param
app.use((req, res, next) => {
if (req.path.match(/\/(ignis-ui|shim-loader)\.js$/)) {
if (req.query.v) {
// Versioned assets - cache for 1 year
res.setHeader("Cache-Control", "public, max-age=31536000, immutable");
} else {
// No version param - short cache for dev/fallback
res.setHeader("Cache-Control", "public, max-age=300");
}
}
next();
});
app.use(express.static(path.join(__dirname, "..", "dist")));
app.use(express.static(config.obsidianAssetsPath));

23
server/version.js Normal file
View File

@@ -0,0 +1,23 @@
const fs = require("fs");
const path = require("path");
const { execSync } = require("child_process");
function getVersion() {
const pkg = JSON.parse(
fs.readFileSync(path.join(__dirname, "..", "package.json"), "utf-8"),
);
const semver = pkg.version;
let hash;
try {
hash = execSync("git rev-parse --short=7 HEAD", {
encoding: "utf-8",
}).trim();
} catch (e) {
hash = Date.now().toString(36).slice(-7);
}
return `${semver}-${hash}`;
}
module.exports = { getVersion };