改了样式表,用户按 F5 还是旧样式,Ctrl+F5 才生效,响应头是 Cache-Control: max-age=600,没有 must-revalidate。日志里能对上时间点,这种反而好排。

十分钟新鲜期内,普通刷新允许直接用本地副本,不会去问服务端。只有强制刷新才绕过缓存。要让普通刷新也拿到新版本,得让缓存每次都验证。这一点先确认清楚,后面就不用反复试。

Cache-Control: no-cache, must-revalidate
ETag: "css-20261114"

「must-revalidate」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。

处理上按这个顺序:样式文件加 no-cache 保留 ETag 每次验证;或者用内容哈希命名 彻底避开这个问题;确认 CDN 上没有额外的长缓存规则覆盖源站;F5 和 Ctrl+F5 各试一次对比响应。

结果对不对很好判断,普通刷新就会发出条件请求 样式更新后 F5 即可生效 不再依赖强制刷新。

作者 9823189