促销页面既要快速打开,也不能把旧价格、过期库存或别人的个性化内容展示给用户。理解边缘缓存与浏览器缓存的协同策略,关键不是让每一层都“尽量多缓存”,而是明确谁缓存什么、缓存多久,以及内容更新后怎样失效。
先按内容划分缓存边界
边缘缓存通常由 CDN 等分布式节点保存内容,多个用户可以复用同一份副本;浏览器缓存保存在用户自己的设备上,适合重复访问时减少下载。两者并非二选一:前者缩短用户到内容的网络距离,后者避免同一设备重复请求。
| 页面内容 | 边缘缓存 | 浏览器缓存 |
|---|---|---|
| 带版本号的图片、字体和脚本 | 适合较长时间缓存 | 适合较长时间缓存 |
| 不含个人信息的活动介绍页 | 可按活动更新频率设置短缓存 | 可短暂缓存或重新验证 |
| 购物车、登录态、个人化推荐 | 通常不应作为公共内容缓存 | 按业务隐私和更新要求设置 |
| 实时价格与库存 | 优先由动态接口返回最新状态 | 避免长时间保存旧结果 |
表格是起点,不是通用配置。比如活动页虽然对所有人相同,但若页面内容直接包含实时库存,就不能仅因它是“活动页”而设置很长的共享缓存时间。

用缓存指令表达不同规则
配置时可检查响应头中的 Cache-Control。公共静态资源可设置较长的 max-age;边缘缓存需要独立时长时,可使用 s-maxage。浏览器和边缘节点看到的规则可能不同,具体是否支持以及优先级,应以所用 CDN 的文档为准。
活动主页面通常变化更频繁,可以采用较短的缓存时间,或通过 ETag 让浏览器在再次访问时询问内容是否变化。ETag 适合减少重复传输,但它不会自动让边缘节点中的旧副本失效,仍需结合缓存刷新或版本管理。
对登录后的账户信息、购物车内容以及按用户变化的价格,避免把响应作为公共副本共享。使用 no-store、private 等指令前,应结合页面是否允许浏览器保存、是否包含敏感信息来判断;不能把它们当作替代权限校验的安全措施。
发布时按顺序处理更新与失效
- 拆分页面。把公共活动说明、商品图片等与价格、库存、购物车等动态内容分开。动态数据可由单独接口读取,减少整页都无法缓存的情况。
- 为静态文件加版本。例如脚本或图片更新时改变文件名中的版本标识。新页面引用新文件,旧文件可以继续由缓存提供,降低发布期间新旧资源混用的风险。
- 确定共享缓存范围。检查 CDN 的缓存键是否把必要的语言、地区或设备差异纳入;不要随意忽略会改变响应内容的查询参数或请求头。
- 安排更新路径。发布活动页后,按平台能力刷新对应页面或目录;对版本化静态文件则让新版本自然生效。不要只清理浏览器缓存,却忘记边缘节点仍保存旧页面。
- 验证不同身份。分别用未登录和已登录状态检查页面与接口,并观察响应头、页面价格和库存更新时间。发现错内容时,先排查缓存键、共享范围和刷新记录,再延长或缩短缓存时长。
促销期间重点防两类问题
旧页面引用了新旧混杂的资源
如果 HTML 已更新而脚本仍被浏览器复用,页面可能出现显示异常。优先使用文件版本化,并确保 HTML 缓存时间短于静态资源;必要时对 HTML 做重新验证。资源文件名带版本后,静态文件可设置较长缓存,而页面负责指向当前版本。
用户之间看到彼此的数据
这是比页面变旧更严重的风险。若响应因 Cookie、账户状态或个人化参数而不同,就要确认边缘缓存不会把一个用户的响应交给另一个用户。优惠资格、会员价和购物车应以服务端权限及实时业务规则为准,缓存只能加速读取,不能决定用户是否有资格购买。
需要规划 CDN 接入、缓存规则和更新流程时,可把现有网站架构、页面类型及促销发布方式整理后咨询德讯电讯,由服务方据此讨论适合的缓存配置;选型时仍应核对实际支持的缓存控制与刷新能力,不以宣传描述替代验证。
常见问题
边缘缓存和浏览器缓存要设置成相同时间吗?
不必。公共静态资源可以两边都缓存较久;活动 HTML、价格和库存的变化节奏不同,应分别设定并验证。
刷新 CDN 后,用户浏览器里的旧内容会自动消失吗?
不一定。边缘刷新通常不等于清除每个用户设备上的副本。可缩短 HTML 缓存时间、采用重新验证,或用新版本资源地址让浏览器请求新文件。
活动倒计时能否直接写在缓存页面里?
固定结束时间可以由前端按页面给出的时间计算倒计时;若倒计时代表实时库存或动态资格,则应从可信的业务接口读取状态,不能依赖缓存页面上的静态数字。
归根结底,边缘缓存与浏览器缓存的协同策略要围绕内容共享范围和更新责任设计:公共内容复用缓存,个性化信息谨慎处理,更新时同时检查页面引用、边缘副本和浏览器副本。