v2.6.3 : cache-busting des assets (jeton ?v= = version, injecte par le serveur)
index.html reference css/js en ?v=__V__ ; handleStatic remplace __V__ par APP_VERSION dans les reponses .html. Chaque deploiement change le jeton -> le navigateur recharge le nouveau code sans vider le cache (cause du 'toujours pas' : ancien treasures.js en cache qui lisait le statique sans les bonus magiques edites en base). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,15 @@ const db = require("./db.js");
|
||||
|
||||
const PORT = process.env.PORT || 80;
|
||||
const ROOT = __dirname;
|
||||
// Jeton de cache-busting injecté dans le HTML (assets référencés en `?v=__V__`) :
|
||||
// il vaut la version de l'appli, donc change à chaque déploiement → le navigateur
|
||||
// recharge forcément le nouveau code/CSS sans vider son cache à la main.
|
||||
const BUILD = (() => {
|
||||
try {
|
||||
const m = fs.readFileSync(path.join(__dirname, "js/game.js"), "utf8").match(/APP_VERSION\s*=\s*["']([^"']+)["']/);
|
||||
return m ? m[1] : String(Date.now());
|
||||
} catch { return String(Date.now()); }
|
||||
})();
|
||||
const LEVELS_FILE = process.env.LEVELS_FILE || "/data/levels.json";
|
||||
const WORLD_FILE = process.env.WORLD_FILE || "/data/world.json";
|
||||
const DB_FILE = process.env.DB_FILE || "/data/mountycrawl.db";
|
||||
@@ -341,6 +350,9 @@ function handleStatic(req, res, url) {
|
||||
fs.readFile(file, (err, data) => {
|
||||
if (err) { res.writeHead(404); return res.end("introuvable"); }
|
||||
const ext = path.extname(file);
|
||||
// Pages HTML : on remplace le jeton de cache-busting des assets (`?v=__V__`)
|
||||
// par la version courante.
|
||||
if (ext === ".html") data = Buffer.from(data.toString("utf8").replace(/__V__/g, BUILD));
|
||||
// Code et pages (.html/.js/.css) : toujours revalider pour qu'une mise à
|
||||
// jour (ou une édition de la base reflétée par le code) soit prise tout de
|
||||
// suite, sans cache navigateur périmé. Médias : cache court.
|
||||
|
||||
Reference in New Issue
Block a user