[object Object]

← back to build-pages

perf: X-Response-Time header on every response (via writeHead hook) + 1 smoke

f752648efbd8d585c12e477c048bfb94457893d0 · 2026-05-13 18:51:10 -0700 · SteveStudio2

Files touched

Diff

commit f752648efbd8d585c12e477c048bfb94457893d0
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed May 13 18:51:10 2026 -0700

    perf: X-Response-Time header on every response (via writeHead hook) + 1 smoke
---
 server.js     | 15 +++++++++++++++
 test/smoke.js |  1 +
 2 files changed, 16 insertions(+)

diff --git a/server.js b/server.js
index 2856253..f6b3f8c 100644
--- a/server.js
+++ b/server.js
@@ -232,6 +232,21 @@ app.use((req, res, next) => {
   res.setHeader('X-Frame-Options', 'SAMEORIGIN');
   res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
   res.setHeader('Permissions-Policy', 'geolocation=(), microphone=(), camera=(), payment=()');
+  // X-Response-Time — machine-readable companion to the home-page footer.
+  // Surfaces in DevTools and any reverse proxy / log pipeline.
+  const t0 = process.hrtime.bigint();
+  res.on('finish', () => { /* finish-only; setHeader after-flush would no-op */ });
+  const _setHeader = res.setHeader.bind(res);
+  res.setHeader = function (...args) { return _setHeader(...args); };
+  res.on('close', () => {});
+  // Compute on the way out via res.writeHead override — simpler than tracking
+  // every send path. ms with 1 decimal so sub-millisecond responses show up.
+  const _writeHead = res.writeHead.bind(res);
+  res.writeHead = function (...args) {
+    const ms = Number(process.hrtime.bigint() - t0) / 1e6;
+    try { res.setHeader('X-Response-Time', ms.toFixed(1) + 'ms'); } catch (_) {}
+    return _writeHead(...args);
+  };
   next();
 });
 app.use('/css', express.static(path.join(__dirname, 'public/css'), { maxAge: '1h' }));
diff --git a/test/smoke.js b/test/smoke.js
index 0f8e53a..5042aa7 100644
--- a/test/smoke.js
+++ b/test/smoke.js
@@ -45,6 +45,7 @@ function check(name, cond, hint = '') {
     check('healthz: ok JSON',        /"ok":true/.test(r.body));
     check('healthz: no-store',       (r.headers['cache-control'] || '').includes('no-store'));
     check('healthz: <50ms',          ms < 50, `actual ${ms}ms`);
+    check('healthz: X-Response-Time',/ms$/.test(r.headers['x-response-time'] || ''));
     r = await fetch('/healthz', { method: 'HEAD' });
     check('healthz: HEAD 200',       r.status === 200);
   }

← 77e85e8 home: 'rendered in Xms' footer — request-time visibility (ty  ·  back to build-pages  ·  p/:slug: 'rendered in Xms' footer (parity with home) 2047a04 →