1.1 明确目标:将首屏时间(TTFB)、资源加载时间和缓存命中率作为关键指标。
1.2 收集信息:确认站点静态资源列表(JS/CSS/图片/字体)、动态接口、登录态路径与是否使用 Cookie。
1.3 测试工具:准备好 curl、浏览器开发者工具、ping/mtr、在线 CDN 测试工具(例如 CDNPerf)、以及 CDN 提供商控制台账号。
2.1 节点选择:登录 CDN 控制台,开启或优先使用「台湾」PoP,并选择支持 CN2/GIA 或专线加速的产品(若有)。
2.2 来源配置:配置回源域名(Origin),建议启用回源 HTTPS 并配置健康检查。
2.3 缓存规则:创建规则区分静态与动态资源(如 /static/*、/assets/* 设置长缓存,API 路径设置不缓存或短缓存)。
3.1 Nginx 示例:在 server 或 location 中添加:
add_header Cache-Control "public, max-age=31536000, immutable";并对需要版本控制的资源使用长 TTL。
Header set Cache-Control "public, max-age=31536000, immutable"3.3 动态或需频繁更新的资源使用:
Cache-Control: no-cache, no-store, must-revalidate并结合 ETag 或 Last-Modified。
4.1 版本化策略:对静态资源在构建时添加 hash(如 app.abc123.js),用于允许 CDN 长期缓存且可通过更名强制刷新。
4.2 CDN 查询字符串设置:在 CDN 控制台设置缓存键时选择“忽略无关查询参数”或“按需保留”,避免因无关参数导致缓存碎片。
4.3 对于需要按参数缓存的接口(例如 image?size=),明确列出允许的参数。
5.1 失效策略:在发布新版本时,通过 CDN 控制台或 API 执行按路径或按文件名的清除。示例 API(伪):
curl -X POST "https://api.cdn.com/purge" -H "Authorization: Bearer TOKEN" -d '{"paths":["/app.abc123.js"]}'
4.2 批量失效:对大量文件改名更稳妥(版本化),避免频繁 purge。6.1 使用 curl 验证头部:
curl -I -H "Accept-Encoding: br,gzip" https://www.example.com/app.abc123.js检查 Cache-Control、Age、X-Cache 或 X-Cache-Status。
7.1 答:台湾 CN2 通常指通过中国电信 CN2 专线到中国大陆或特定运营商的优化线路,优势是跨境稳定性和更低抖动。选择台湾 CN2 节点时,要确认 CDN 提供商的回源路径、是否支持 GIA、以及与目标用户网络的 peering 情况。
8.1 答:最佳做法是将静态资源域名与主站分离(如 static.example.com),静态域名不设置或不传送 Cookie;在 CDN 缓存键配置中忽略 Cookie,或只保留必要的 Cookie。使用前端逻辑将登录/个性化内容通过 API 加载,而不是在静态资源上带 Cookie。
9.1 答:步骤:1)用 curl -I 查看响应头(检查 Age、X-Cache、Cache-Control);2)确认 URL 是否带查询参数或 Cookie;3)检查 CDN 控制台的缓存规则是否覆盖该路径;4)查看是否存在请求方法(POST/GET)或响应码(302/404)导致不缓存;5)如仍异常,抓取回源日志并提交给 CDN 支持。
