缓存是性价比最高的速度手段之一:把算好的页面或资源存在离用户更近的地方,下次请求直接给,不用每次都回源重算。但配错了,用户就会看到过期内容,改版后旧页面赖着不走。速度和新鲜度之间要拿捏分寸。
对 SEO 来说,缓存影响的是 TTFB 和整页加载,进而牵动核心网页指标。把它放进整体优化清单,可对照技术SEO 实战手册的速度部分,缓存只是其中一环,要和资源压缩、协议升级一起看才有整体效果。
快速结论
- 浏览器缓存和 CDN 缓存解决的是不同距离的延迟。
- 静态资源缓存久一点,HTML 要短一些或带版本号。
- 内容更新靠”换 URL”而非”等过期”最稳妥。
- 缓存配置要和核心网页指标一起验收,别只看理论。
缓存为什么是速度杠杆
一次页面请求背后可能是几十个文件:HTML、CSS、JS、图片。如果每个都回源服务器现算现取,延迟会被层层叠加,首屏自然慢。缓存把这些成果放在边缘节点或浏览器里,后续请求省掉回源,TTFB 和整体耗时直接掉下来。
谷歌把速度当排名因素,缓存是少数”不改业务就能提速”的杠杆。它和抓取预算优化也有关:蜘蛛每次抓取更快,同样的预算能覆盖更多页面,间接帮收录。可见缓存不只是前端体验,也连着抓取效率。
浏览器缓存与 CDN 缓存
浏览器缓存管的是”用户本机”,靠 Cache-Control 的 max-age 决定一个文件在本地留多久;CDN 缓存管的是”边缘节点”,把内容复制到离用户近的机房。两者层级不同,前者省回源、后者省跨地域往返,叠加用效果最好。
配置上要分清对象:带指纹的资源(文件名含哈希)可以缓存一年,因为内容变了文件名就变;而 HTML 这类会变的文档,缓存要短,或靠后台主动清。混为一谈是常见的性能坑,也是内容串味的源头,分开对待才稳。
怎么设缓存时间
经验上,图片、字体等静态资源可设较长 max-age(比如一年),前提是用版本化文件名;CSS、JS 同理。HTML 文档建议短缓存(几分钟到几小时),保证改稿后用户能较快看到新版,又不至于每次都回源被打爆,平衡两端。
关键的不是”越长越好”,而是”变了能立刻换”。给资源上内容哈希文件名,就等于给每个版本一个唯一地址,旧的自然不会被误用。这样长缓存和即时更新就不冲突,这也是现代构建工具默认的做法,值得照搬,少踩坑。
内容更新怎么不串味
最稳的更新方式是”换 URL 不换缓存”:发新版本时生成新文件名,旧资源按原时长继续活,新页面指向新文件。用户拿到的永远是对的那份,不会有”一半新一半旧”的闪烁,也省去等缓存过期的焦虑,发布最省心。
如果必须原地更新 HTML,就靠后台在发布时主动清 CDN 和浏览器相关缓存(purge)。手动等过期最不可靠,尤其大站缓存层级多,哪一层没清干净都会露出旧版。把清缓存写进发布流程,比事后救火省心,也避免客诉。
缓存与核心网页指标
缓存直接改善 TTFB 和 LCP:资源命中边缘节点后,首屏主图和大块内容几乎瞬间到位。对图文重的页面,这一项常常能扳回好几十分。验收时别只看桌面,移动网络下 CDN 命中带来的差距更夸张,体验差最明显。
但要注意缓存本身不产生内容,空缓存(缓存未 warmed)时首次访问仍慢。可用预热能缓解,即上线后主动请求一遍让边缘节点填满。把它纳入技术SEO 实战手册提到的监控项,持续看命中率才稳,别只测一次。
动态内容的缓存
评论区、价格、登录态这类动态片段不能整页长缓存,否则人人看到同一份。解法是用”页面整体短缓存 + 动态片段客户端拉取”,或边缘计算在节点上拼装。既保速度,又不丢个性化,是动态站常用的折中,两头兼顾。
电商、SaaS 这类站尤其要吃透这层:商品页可以缓存框架、实时库存单独取。把”变的部分”和”不变的部分”拆开处理,缓存策略才有弹性,否则要么慢、要么错,两头都不讨好,用户体验和 SEO 一起受损。
常见坑
一个典型错误是把 HTML 也设成一年缓存,结果改版后用户一周看到旧页,客服电话被打爆。另一个是把 no-cache 当不缓存——它其实仍会存,只是每次验证,理解偏差导致预期落空,排查时一头雾水,误以为没生效。
还有人忘了 CDN 和源站缓存是两套,只清了一边。正确做法是改完同时 purge 两边,并验证边缘节点确实返回新版。缓存配置看着简单,链一多就容易漏,发布前先在小流量验证命中与更新都正常,再全量推。
配合站点架构
缓存命中率也受 URL 结构影响:同一内容若有多种 URL(带参数、带尾斜杠),会被当成不同资源重复缓存,浪费边缘容量。统一规范链接,让一份内容对应一个地址,缓存效率立刻提升,顺带也利于收录,一举两得。
扁平清晰的站点架构让重要页路径稳定,缓存键更干净,更新时影响面可控。结构乱则缓存跟着乱,改一处牵动一片。把架构和缓存一起规划,比事后一个个修边缘异常省力得多,也更容易在团队内推行。
一张表定缓存时长
图:页面缓存策略 核心要点(运营GO 整理)
| 资源类型 | 建议 max-age | 说明 |
|---|---|---|
| HTML 文档 | 数分钟~数小时 | 会变,短缓存或发布即清 |
| CSS / JS(带哈希名) | 一年 | 文件名即版本,可长缓存 |
| 图片 / 字体 | 数周~一年 | 内容稳定,长缓存省流量 |
| API / 动态片段 | 不缓存或极短 | 实时数据,避免串味 |
下一步行动清单
- 盘点站点资源,按”是否带版本名”分组。
- 给静态资源设长 max-age,HTML 设短。
- 把”发布即清缓存”写进上线流程。
- 上线后测边缘命中率与首屏耗时是否达标。


