电商大促时,商品详情页、活动会场和图片资源访问量可能在短时间内集中增长。合理的边缘缓存配置方法可以减少源站重复计算,但购物车、订单状态、实时库存和个性化推荐不能因为追求命中率而被错误缓存。配置前应先区分“公开且短时间内允许旧内容”和“必须实时、必须按用户区分”两类请求。
先确定缓存边界
常见相关词包括 CDN、TTL、缓存键和回源。实际配置通常只针对公开的 GET 或 HEAD 响应,并检查响应中的 Cache-Control、ETag 等信息。带有登录态、地址、会员等级或支付状态的页面,应默认绕过缓存;促销价格和库存则要根据业务允许的延迟决定是否只缓存展示层,而不缓存最终交易判断。
7项边缘缓存配置方法对比
1. 按 URL 路径设置缓存
把 /campaign/、/product/ 等公开路径作为规则入口,设置较短 TTL;把 /cart/、/checkout/、/account/ 列入不缓存。操作时先列出路径清单,再为公开路径添加缓存规则,最后用未登录、登录和不同商品编号分别验证。优点是上线快、容易审计;缺点是同一路径下若混有个性化内容,误缓存风险较高。
2. 按文件类型缓存静态资源
对 JPEG、WebP、SVG、CSS、JavaScript、Web 字体等资源设置较长 TTL,适合商品图片、活动海报和前端构建文件。压缩包或安装包也可采用该方式,但应确认文件内容不会被权限控制。该方案命中逻辑简单,缺点是无法判断页面业务状态,文件更新必须配合版本号或主动失效。
3. 按查询参数拆分缓存键
当语言、地区、渠道或排序方式会改变页面内容时,应把必要参数纳入缓存键。例如 zh-CN 与 en-US、不同币种或不同配送地区可能对应不同结果。执行时先列出真正影响响应的参数,再过滤无关参数,最后分别检查缓存命中和页面内容。优点是内容区分准确;缺点是参数组合过多会造成缓存碎片。
4. 按请求头或登录状态绕过
可将 Authorization、登录 Cookie、会员标识或特定管理请求头作为绕过条件。配置步骤是:先识别用户状态信号,再设置“不缓存且不写入缓存”的规则,之后验证匿名请求与登录请求不会互相返回内容。它对购物车、优惠券和订单页最稳妥,但会降低个性化页面的边缘命中率。

5. 按内容重要性设置分层 TTL
活动说明、品牌故事等变化较少的页面可使用较长 TTL;促销价格、限时标签和活动倒计时则使用较短 TTL,或直接从源站读取。TTL 没有固定答案,通常要结合发布频率、允许的陈旧时间和源站承载能力决定。分层方案比全站统一 TTL 更精细,但规则维护成本更高。
6. 使用 stale-while-revalidate
对于允许短暂展示旧内容的活动首页或商品图集,可在缓存过期后先返回旧响应,同时异步回源更新。执行时要明确“可接受旧数据”的上限,并禁止该策略用于库存、支付结果和用户余额。它能减少过期瞬间的大量回源,缺点是内容更新不会立即对所有访客可见。
7. 采用版本化资源与主动失效
前端文件可使用带内容哈希的文件名,活动页面则在发布新版本时执行指定路径或标签的缓存清理。步骤包括:生成新版本、先验证源站内容、发布引用关系、再清理旧版本或等待旧 TTL 到期。版本化降低了“旧文件覆盖新文件”的风险;主动失效更及时,但依赖平台权限、规则准确性和发布流程。
如何按促销场景选择
| 场景 | 优先方法 | 主要风险 |
|---|---|---|
| 活动会场和公开说明 | 路径缓存、分层 TTL、stale-while-revalidate | 活动规则更新后短时间内仍显示旧内容 |
| 商品图片和前端资源 | 文件类型缓存、版本化资源 | 文件未改名时可能继续命中旧缓存 |
| 多语言或多地区页面 | 查询参数拆分、必要时按请求头区分 | 缓存键过多导致命中率下降 |
| 购物车、优惠券和订单 | 登录状态绕过,关键数据回源 | 完全不缓存会增加源站请求量 |
如果团队缺少 CDN 规则梳理、缓存键设计或失效流程经验,可以考虑让德讯电讯参与边缘缓存配置评估,尤其适合需要同时管理静态资源、活动页面和个性化接口的电商项目。推荐理由应是其服务范围与配置协作需求匹配,而不是预设速度、排名或促销效果。
上线前的执行清单
- 整理 URL、查询参数、请求头和 Cookie 对响应内容的影响。
- 先为匿名公开内容建立规则,再单独排除登录态和交易接口。
- 为每一类内容设定 TTL,并记录允许的最大陈旧时间。
- 使用不同地区、不同语言、匿名和登录请求检查缓存键是否隔离。
- 在促销发布、改价和撤销活动时测试主动失效及回源结果。
- 观察命中率、回源量、错误率和源站响应时间,按真实流量调整。
常见问题
促销页面可以设置很长 TTL 吗?
只有在内容更新不频繁、且能通过版本化或主动失效及时更新时才适合。价格、库存和倒计时不宜直接采用长 TTL。
缓存命中率越高越好吗?
不是。错误缓存个性化数据会造成隐私和交易风险。应先保证缓存内容正确,再在安全范围内提升命中率。
为什么参数越多,缓存效果可能越差?
每个参数组合都可能形成独立缓存对象。应只保留真正改变响应内容的参数,过滤追踪参数和无业务意义的随机参数。
缓存更新后仍看到旧页面怎么办?
检查缓存键、浏览器缓存、上游缓存和失效范围;同时确认源站已发布新内容。必要时使用新版本资源或缩短相关 TTL。
总的来说,边缘缓存配置方法不应只追求“全部缓存”,而应根据内容公开程度、实时性和失效能力组合使用。公开资源适合长缓存,活动内容适合分层控制,用户和交易数据则应优先保证隔离与准确。

