VP导航 VP导航
首页 提交网址

资讯文章 资讯 · NEWS

样式改完了,用户三天后还看到旧版:目录站的静态资源缓存和发布顺序

2026-10-23 约 1,682 字 预计阅读 4 分钟 yiyunkj

样式改完了,用户三天后还看到旧版:目录站的静态资源缓存和发布顺序 样

上周我把分类页的间距调了一遍,自己刷新看到的是新版,第二天有用户在群里贴了张截图,还是旧的。让他强制刷新一下才好。这种反馈一多,你就会开始怀疑是不是改错了,其实问题在缓存。

目录站静态资源的指纹命名与发布顺序

图片来源:网络,版权归原作者所有,侵权请联系删除

一个 URL 只能有一种缓存策略

浏览器缓存这件事的混乱,多半来自把两种策略用在了不该用的资源上。这两种策略的区别只有一句话:URL 本身就是版本号,还是 URL 固定、内容靠服务端告诉客户端有没有变。

资源该给的指令理由
HTML 文档no-cache + ETagURL 稳定,内容会变,用之前必须回源确认
带指纹的 JS / CSSmax-age=31536000, immutable内容变了文件名就变,旧文件永远不会改
无指纹的图片max-age=3600 + 重新验证文件名不变,只能靠短新鲜期加 304 兜底

最常见的错法是把 HTML 也设成一年。HTML 是那个「告诉浏览器该加载哪个指纹文件」的文档,它一旦被缓存住,后面所有资源更新都传不出去。反过来把所有资源都设成 no-store,每次访问全量回源,首字节时间立刻变差。

文件名指纹是长缓存的前提

很多站用的是 style.css?v=3 这种查询串版本号。能用,但有两个隐患:一部分代理和 CDN 的缓存键会忽略查询串,v=4 和 v=3 会被当成同一个文件;有些下载工具和离线缓存也会把查询串当噪声。结果就是你以为换了版本,实际发出去还是旧内容。

把内容哈希写进文件名里没有这个问题。app.a1b2c3d4.css 的哈希由内容算出来,改一个字节文件名就变,新旧文件可以同时存在。这对滚动发布特别重要:某个用户的 HTML 还是上一版,指向的旧资源文件必须仍然能访问,否则他看到的是白屏或者没样式的裸 HTML。

哈希长度取 8 到 12 位十六进制就够。构建产物里记得输出一份文件名映射表,模板引用时查表,别手写。

immutable 到底在解决什么

这条指令出自 RFC 8246,2017 年 9 月发布。含义是:在这个新鲜期内,这个 URL 的内容保证不变,缓存不需要再来问。

它真正省的是「用户主动刷新」这一下。不带 immutable 时,用户按 Ctrl+R,浏览器会对页面上每个缓存资源发一次条件请求,服务器回一堆 304。这些请求没传内容,但往返延迟是实打实的。Firefox 49 和 Safari 11 支持这条指令,刷新时直接跳过重新验证。Chrome 的情况各家资料说法不一致,官方立场是普通刷新本来就不会重新验证子资源,所以这条指令在 Chrome 上基本是冗余而不是有害。

有一条铁律:没有文件名指纹的资源,绝对不能加 immutable。文件名不变而内容会变的情况下加这条指令,等于告诉浏览器「这一年都别看新的」,用户只能自己清缓存。

发布顺序比缓存配置更容易出错

正确顺序只有一种:先上传新资源文件,再切 HTML,最后清 CDN 上的 HTML 缓存。旧资源文件保留 7 到 30 天,等所有会话都过期了再删。

顺序颠倒的两种后果都很具体。新 HTML 先上线、资源还没传完,用户拿到的是 404 的 CSS,页面成了纯文本;旧 HTML 还在、资源已经被覆盖删除,同样是白屏。中间那段窗口可能只有几十秒,但如果你的用户正好在刷新,他记住的就是「这站坏了」。

用版本目录能省掉这件事。/assets/20261023/ 整目录上传,HTML 里引用新目录,回滚就是把引用改回上一个目录,连重新构建都不用。

上线后怎么确认生效了

三个动作,两分钟能做完。

  • 对带指纹的资源执行 curl -I,看 cache-control 里有没有 immutable,max-age 是不是一年。
  • 浏览器里刷新页面,DevTools 的网络面板看资源来自 memory cache 或 disk cache,而不是一串 304。
  • 看 HTML 响应头的 max-age。超过 300 秒就要小心,改版到用户看见之间的延迟会按这个值放大。
缓存配置不会让排名上升,但配置错了会让你的每一次改版都白做。目录站改版频繁,这一项值得一次配好。

如果站点前面挂着 CDN,还要多一步:确认 CDN 的缓存键包含完整路径,刷新接口能按目录批量清。清缓存这件事靠人记不住,最好接在发布脚本的最后一步。

本文标签 静态资源缓存 文件名指纹 发布流程
← 上一篇 骨架屏看着很快,爬虫看到的可能是空的:目录站的加载状 下一篇 → 凌晨发的条目显示成昨天:目录站时间字段的时区,从数据

— 本文完 —

提交网址

发现好站,欢迎自荐收录

站内搜索

站点统计

  • 今日审核0
  • 已收录站点3744
  • 正常访问3737
  • 失联站点7
  • 累计访问174

网站分类

  • AI工具 0
    AI对话0 AI绘画0 AI写作0 AI编程0 AI音视频0 AI办公效率0
  • 开发编程 0
    前端开发0 后端开发0 移动开发0 开源与代码托管0 数据库0 开发文档与教程0
  • 设计素材 0
    UI设计0 图标素材0 免费图库0 字体下载0 配色工具0 设计模板0
  • 站长工具 0
    网站统计0 SEO工具0 域名与主机0 收录提交0 建站程序0 运维监控0
  • 学习教育 0
    编程教程0 语言学习0 职业技能0 公开课与慕课0 考试题库0 中小学教育0
  • 生活服务 0
    交通出行0 外卖点餐0 房产租房0 医疗健康0 政务办事0 快递物流0
  • 影音娱乐 0
    影视观看0 音乐音频0 游戏资源0 短视频直播0 小说阅读0
  • 电商购物 0
    综合商城0 比价工具0 导购返利0 二手交易0 团购优惠0
  • 综合其他 1
    实用工具0 资源合集0 小众站点0 个人博客0 论坛社区0
  • 新闻资讯 0
    科技资讯8 财经媒体1 行业动态0 社会热点0 综合门户0
  • 资讯文章 230

最新收录

  • 车机屋-专业车机系统研究平台,海量正
  • 阿里巴巴矢量图标库
  • DeepSeek
  • 通义千问
  • Kimi
  • 把目录做成一份周报发出去:订阅入口、
  • 统计后台的数字别全信:目录站该不该自
  • 一张缩略图要出五个尺寸:目录站的图片

浏览排行

  1. 满分作文网 6
  2. Let's Enhance 3
  3. 淘菜菜 3
  4. MasterClass 3
  5. TypeScript 中文网 3
  6. Zhengziying 3
  7. 得意生活 3
  8. 镇江网友之家 3

联系我们

bQ:12345678

电话:400-8888-888

邮箱:admin@example.com

时间:09:00-21:00

友情链接

车机屋·焊锡条·探兔AI导航·静电测试仪·大学生联盟

关于我们|广告合作|隐私条款|网站地图

原ICP备00000000号-1,@2026

由 Z-BlogPHP 驱动