
本指南针对两类常见场景:一是源站在海外,用户在中国大陆(回国用户)访问响应慢;二是源站在国内,用户在海外访问体验差。目标是通过CDN配置、网络调优与源站适配,将TTFB、首屏时间和下载速度显著改善。
核心思想:选对CDN节点/线路→配置合适的缓存策略→优化TLS与HTTP协议→调测并修复跨境链路问题。
步骤1:比对提供商(阿里云/腾讯/百度/Cloudflare/FASTLY等)是否支持“大陆加速”或“Global+China”服务,并确认ICP要求与合规能力。
步骤2:选择Anycast+BGP节点、支持HTTP/2和HTTP/3、支持回源HTTPS和自定义证书的方案。若需大陆节点,确认提供商代备案或合作CDN厂商。
操作:在国内接入时必须完成ICP备案(ICP备案域名与接入域名一致)。外国主体可通过第三方合作商办理备案或使用国内CDN提供商的“海外到国内”服务。
小提示:域名CNAME到CDN前先确保备案在进度允许范围,证书与备案信息一致,避免运营商DNS解析检查被拒。
1) 新增加速域名→填写源站类型(IP/域名)、回源协议(HTTP/HTTPS)、回源端口;2) 选择加速区域(中国大陆/全球/指定国家);3) 配置缓存规则(按后缀、路径或参数策略);4) 配置HTTPS证书(上传或由CDN托管);5) 配置防盗链、WAF与限流。
6) 完成后获取CNAME记录,改写DNS并验证域名生效;7) 测试并逐步切换流量。
Nginx建议配置(关键项):开启gzip/brotli、设置合理Cache-Control、支持Range请求、增加keepalive、启用tcp_nodelay与sendfile。示例指令片段:
示例要点:add_header Cache-Control "public, max-age=3600"; gzip on; brotli on; tcp_nopush on; sendfile on; keepalive_timeout 65;
步骤:根据资源类型分层缓存(静态资源长缓存,API短缓存或不缓存)。使用路径与文件扩展名匹配规则,按需忽略或包含Query String(例如图片忽略,API包含)。
实现:在CDN面板设置缓存键包括Host+Path+(Query白名单),配置回源缓存校验(Origin Cache-Control可覆盖或尊重)。
操作项:开启TLS1.3、启用OCSP stapling、开启HTTP/2与QUIC/HTTP3,配置Session Ticket与0-RTT(评估安全性)。
测试命令:openssl s_client -connect domain:443 -servername domain 检查证书链与SNI;curl -I --http2 https://domain 检查协议。
命令集合:dig +trace domain、mtr -n domain、traceroute domain、curl -v/-I 检查头部、wget --content-disposition 检查下载、openssl s_client。步骤:先DNS→再路由→再握手→再应用层。
诊断关键点:确认CDN边缘IP是否生效、检查边缘返回的Via/X-Cache头是否命中、查看是否存在跨境回源导致高延迟。
问题示例:A. 页面图片不走缓存(原因:Set-Cookie或Vary误配置)。解决:清理不必要的Cookie,调整Vary与Cache-Control;B. 回源HTTPS握手失败(证书不信任或SNI未传)。解决:上传受信任证书或开启SNI;C. 文件断点续传失败(206不支持)。解决:确保源站支持Range并设置Accept-Ranges头。
另:注意CDN清理延迟、地理化路由偏差、并发连接数限制,必要时开启Origin Shield与地域回源优化。
关键指标:TTFB、首包时间、PLT、缓存命中率、错误码比例(4xx/5xx)、回源带宽和丢包率。使用CDN提供的监控面板并结合外部合规检测(如webpagetest、SpeedCurve)。
定期做链路回归测试并设置告警(命中率下降、5xx上升、回源RTT异常)。
答:先从DNS与路由入手:确认访问者解析到的CNAME是否指向国内边缘IP(dig),用mtr或traceroute查看是否经过跨境链路;接着检查CDN返回头(X-Cache或Via)确认是否命中边缘缓存;最后看回源RTT与源站负载是否导致回源延迟。
答:使用可信证书并在CDN配置中开启SNI;启用TLS1.3并开启OCSP stapling;如果回源方对外网有防火墙,允许CDN回源IP段;必要时使用HTTP而非HTTPS回源(仅在安全可控时)或设置分区域回源(国内走国内回源,海外走海外回源)。
答:检查:1) 源站返回的Cache-Control/Expires是否禁止缓存;2) CDN缓存规则是否被路径或Query覆盖;3) 有无Set-Cookie或Vary导致边缘不缓存;4) 使用CDN的API或控制台主动purge并观察X-Cache是否变为MISS后重新命中。