Statische Dateien: JS/CSS revalidieren statt blind cachen
express.static setzte kein Cache-Control, also legte der Browser die Lebensdauer selbst fest (heuristisch, aus dem Alter der Datei). Folge: nach einem Deploy lief die Oberflaeche im offenen Tab weiter mit dem alten chat.js - die frisch ausgelieferten Tabellen wurden dort weiter als Pipe-Wueste gerendert, obwohl der Server die neue Datei schon hatte. no-cache heisst nicht "nicht cachen": der Browser behaelt die Datei, fragt aber per ETag nach, ob sie noch gilt (304, kein erneuter Download). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -135,7 +135,16 @@ app.locals.safeUrl = function (url) {
|
|||||||
// Middleware
|
// Middleware
|
||||||
app.use(express.json({ limit: '2mb' }));
|
app.use(express.json({ limit: '2mb' }));
|
||||||
app.use(express.urlencoded({ extended: true, limit: '2mb' }));
|
app.use(express.urlencoded({ extended: true, limit: '2mb' }));
|
||||||
app.use(express.static(path.join(__dirname, 'public')));
|
// Statische Dateien. JS/CSS bekommen "no-cache": der Browser darf sie behalten,
|
||||||
|
// muss aber jedes Mal per ETag nachfragen, ob sie noch aktuell sind (304, kein
|
||||||
|
// erneuter Download). Ohne diesen Header setzt der Browser die Lebensdauer selbst
|
||||||
|
// fest — nach einem Deploy lief die Oberfläche dann noch tagelang mit dem alten
|
||||||
|
// chat.js weiter, obwohl der Server längst die neue Datei auslieferte.
|
||||||
|
app.use(express.static(path.join(__dirname, 'public'), {
|
||||||
|
setHeaders: (res, datei) => {
|
||||||
|
if (/\.(js|css)$/i.test(datei)) res.setHeader('Cache-Control', 'no-cache');
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
// Allow the browser extension (running on indeed.com) to call the import API.
|
// Allow the browser extension (running on indeed.com) to call the import API.
|
||||||
// Kept narrow: only the extension-facing endpoints need cross-origin access.
|
// Kept narrow: only the extension-facing endpoints need cross-origin access.
|
||||||
|
|||||||
Reference in New Issue
Block a user