import type { NextFunction, Request, Response } from 'express' /** * 给「几乎不变」的配置类接口加 HTTP 缓存头。 * * 背景:后台刷新页面时前端会重新拉一遍这些静态配置(接单分类、快手行业店铺、 * 自定义店铺、dev-mock 状态)。它们此前没有任何 Cache-Control,于是每次刷新都真的 * 走一次网络 —— 生产抓包显示一次刷新里有 4 个这类请求,且都和业务查询挤在同一个 * 连接池窗口内。 * * 必须带 `private`:这些是带鉴权的后台接口,禁止任何共享/中间缓存留存响应。 */ export function setHttpCache(maxAgeSeconds: number) { const headerValue = `private, max-age=${Math.max(0, Math.floor(maxAgeSeconds))}` return (_req: Request, res: Response, next: NextFunction): void => { res.setHeader('Cache-Control', headerValue) next() } }