1.
第一步把页面和接口按可缓存性分类:A. 静态资源(JS/CSS/图片)可长期缓存;B. 动态但可共享的数据(如商品列表)可短时缓存或使用 stale;C. 私有化用户数据(用户资料、购物车)不应被共享缓存。
操作:在后端或 CDN 配置上列出路径规则,例如 /static/* -> 缓存365天,/api/public/* -> 缓存60s,/api/private/* -> 不缓存或只用 signed cookie 校验。
2.
设置具体示例:静态资源返回 Cache-Control: public, max-age=31536000, immutable;共享动态返回 Cache-Control: public, max-age=60, stale-while-revalidate=30;私有接口返回 Cache-Control: private, no-cache 或 no-store。
操作步骤:在应用框架中统一中间件添加以上头部,或在 CDN 的 “origin response” 规则中覆写头部,确保一致性。
3.
设计要点:缓存键应只包含影响响应的部分(路径、必要的查询参数、Accept-Language),剔除无用参数(如 utm_、trace_id)。
操作:在 CDN(如 Fastly、Cloudflare)配置自定义 cache key,使用正则或脚本移除指定 querystring,并把默认 Cookie 排除或仅保留必要 cookie。
4.
方案A:边缘分片 + 签名 URL/签名 Cookie。私有内容通过短时签名 URL 或签名 Cookie 让 CDN 缓存受控,签名过期后必须回源刷新。
方案B:边缘个性化(Edge Workers/Functions)。在边缘缓存公共片段,私有数据由边缘函数在返回页面时注入或通过 JS 异步请求私有 API。
5.
步骤:将页面拆为可缓存片段(header、footer、公共主体)与私有片段(用户栏、购物车)。在 HTML 中使用 ESI include 标签让 CDN 在边缘拼装。
配置:在 origin 输出 ESI 指令,CDN 需开启 ESI 解析;对私有片段设置 no-cache 或签名策略。
6.
操作步骤:为每条可缓存对象打 surrogate-key(如 Surrogate-Key: product-123),当商品更新时通过 CDN 的 API 批量按 key 失效,避免逐 URL 清除。
实践建议:实现后台发布时调用 CDN 清除接口;在测试环境先用单对象清除;并监控清除延迟。
7.
高并发突发前先预热关键页面:通过脚本向 CDN 请求热点 URL,填充边缘缓存。配置 Origin Shield 或二级缓存,减轻源站压力。
操作脚本:编写并发有限的 curl/ab/wrk 脚本,依照真实请求头(Accept、Cookie)进行预热。
8.
步骤:使用 Cloudflare Workers、Fastly VCL 或 Akamai EdgeWorkers 在边缘解析签名、读取部分 Redis/kv,决定返回缓存或回源;对私有数据仅返回最小化信息。
安全:边缘函数不得存储长期敏感信息,所有调用须走 TLS,敏感访问做审计日志。
9.
部署要点:采集 CDN 与 origin 的缓存命中率、回源次数、每秒请求、错误率。设置告警阈值(如缓存命中率跌破 70% 或回源增长 3x)。
操作:接入 CDN 的监控 API,或用 Prometheus + Grafana 汇总解析日志(edge access log),定期审查并优化缓存规则。
10.

私有化数据传输必须开启 HTTPS,签名密钥定期轮换,日志脱敏存储。对包含个人敏感信息的响应禁止被 CDN 公共缓存(Cache-Control: private, no-store)。
合规操作:实现密钥管理(KMS),并对所有缓存策略和失效操作保留审计记录。
11.
问:带 Cookie 的响应如何兼顾缓存与个性化?
答:仅基于必要 cookie(如 locale)构建 cache key,其余 cookie 排除并通过前端或边缘函数做个性化注入;对于必须基于会话的内容,使用 signed cookie 或让页面异步请求私有 API。
12.
问:突发访问会不会把私有接口压垮 origin?
答:采用速率限制、后退策略(circuit breaker)、origin shield 与短时缓存(stale-while-revalidate)结合边缘降级页面,必要时返回部分缓存数据与错误提示,避免 origin 全面崩溃。
13.
问:改了缓存规则如何安全验证?
答:先在灰度边缘或测试 CDN 域上验证,使用请求头(Cache-Control: no-cache)强制回源检查响应头与 Surrogate-Key,然后用合流流量小比例 AB 测试,监控命中率与错误率再全量发布。