You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Vercel默认静态文件缓存策略的疑问

结论

这两处表述不存在本质冲突,你遗漏了Vercel对不同缓存层的差异化处理规则——默认配置下静态文件确实会被Vercel边缘节点自动缓存。

具体缓存逻辑

Vercel的缓存体系是完全独立的两层,两层对同一个Cache-Control头的处理规则并不一致:

  • 终端浏览器/本地客户端层:这一层完全遵循标准HTTP协议语义,默认返回的public, max-age=0, must-revalidate头就是面向这一层设计的,作用是强制客户端每次发起请求时都做资源校验,不在本地存储长期缓存,和静态文件缓存章节的描述完全匹配。
  • Vercel边缘节点层:这一层属于Vercel内部网络,不会完全照搬标准HTTP缓存规则判断是否存储资源。只要是项目构建输出的静态产物——包括public目录存放的图片、字体、静态文件,以及构建生成的JS、CSS等资源,首次被请求时边缘节点回源拿到内容后,就会自动将资源存储在当前边缘节点,完全不受返回给客户端的max-age=0指令影响。
    边缘节点存储缓存后,后续收到对应资源请求时不会直接透传到源站,而是先通过内部维护的资源版本标识做校验:如果资源没有因为重新部署发生内容变更,就直接返回边缘节点存储的缓存内容,同时照样携带public, max-age=0, must-revalidate响应头返回给客户端;只有重新部署导致文件内容哈希变化、或者手动触发缓存刷新操作时,边缘节点才会清除旧缓存,回源拉取新版本资源。
容易忽略的规则说明

你大概率漏看了文档里关于边缘缓存的特殊规则:

Vercel为静态资源默认返回的Cache-Control头仅作用于下游客户端(用户浏览器、第三方中间代理等),不约束Vercel内部边缘节点的缓存存储逻辑。
只有手动给静态资源配置Cache-Control: no-store响应头时,才会同时禁用边缘节点缓存和客户端缓存;其他场景下,无论你给静态资源设置的max-age值是多少,边缘节点都会默认缓存静态文件。

内容的提问来源于stack exchange,提问作者Joji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:48:15