目标:在新加坡(ap-southeast-1 / SG)云服务器上部署网站,并结合全球CDN,把全球用户的请求延迟降到可接受范围。关键点:静态资源交由CDN缓存,动态请求合理回源,优化TLS与网络参数并建立监测指标。
选择云厂商(AWS、阿里云、GCP 或 Vultr/DO)并创建新加坡实例。选择CDN:Cloudflare(简单、Anycast)或 CloudFront/阿里云CDN(深度控制)。准备域名、证书(Let's Encrypt 或厂商托管)、SSH 访问。
示例(Ubuntu):ssh 登录后执行:sudo apt update && sudo apt install -y nginx certbot git curl。把网站代码拉到 /var/www/example,配置 Nginx 站点文件 /etc/nginx/sites-available/example.conf,并启用。启动 nginx:sudo systemctl enable --now nginx。
编辑 /etc/nginx/nginx.conf,加入:worker_processes auto; worker_connections 10240; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 启用 HTTP/2:在 server 中使用 listen 443 ssl http2; 并开启 OCSP Stapling 和 session resumption。
静态文件设置长缓存头:location ~* \.(css|js|jpg|png|svg|ico)$ { expires 30d; add_header Cache-Control "public, max-age=2592000"; } 若需版本化资源,使用文件名打版本号。
注册并添加站点→扫描 DNS→选择 Free/Pro 套餐→变更域名 NS 指向 Cloudflare。创建 Page Rules:1) 缓存静态资源(Cache Level: Cache Everything + Edge Cache TTL 1 month)2) 对后台管理页面设置 Bypass。开启 Brotli、自动最小化、Always Online。
在控制台创建 Distribution:Origin Domain 指向 nginx 公网域名或负载均衡器;Origin Protocol Policy 选 HTTPS Only 或 Match Viewer;Default Cache Behavior 设置缓存策略、Viewer Protocol Policy、Allowed HTTP Methods(GET, HEAD, OPTIONS);设置 TTL(Default/Min/Max TTL)并启用 Gzip/Brotli。发布后将域名指向 CloudFront CNAME。
方法:把 /static、/assets、/images 等路径全部通过 CDN 缓存;对动态 API(/api/*)设置较短 TTL 或不缓存,必要时使用 CDN 的缓存键(忽略 Cookie 或部分参数)或使用 Edge Function(Cloudflare Workers / Lambda@Edge)做个性化渲染。
启用 TLS 1.3,证书使用 2048+ RSA 或 ECDSA,提高握手性能。开启 OCSP Stapling,启用 session resumption(ticket),减少握手往返。CDN 端开启 TLS 加速与 HTTP/2 或 HTTP/3(QUIC)以减少全球延迟。
使用 Anycast DNS(Cloudflare/Route53)降低 DNS 解析延迟。把站点主域名指向 CDN 的 CNAME 或 A(Anycast IP),减小首次请求的距离成本。设置合理的 TTL(测试期低 TTL,稳定期提高)。
在本地或各地节点测试:curl -w "@curl-format.txt" -o /dev/null -s https://example.com (自定义 curl-format 输出 time_namelookup,time_connect,time_starttransfer,time_total);使用 ping/traceroute/mtr:mtr -r -c 10 example.com;使用 dig 检查 CNAME:dig +short example.com; 使用 WebPageTest/Gtmetrix / SpeedCurve 做跨地区测量。先记录“改造前”数据,逐步对比“改造后”。
在 CDN 与服务器端开通访问日志(Cloudflare Logpush / CloudFront Logs),设置 Grafana+Prometheus 或厂商监控查看 95/99 百分位延迟、缓存命中率、回源流量。建立自动化脚本:通过 API 执行 CDN 缓存清理、证书更新与报警。
问:为什么某些国家访问仍然慢,CDN 看起来已启用?

答:可能原因包括 CDN PoP 覆盖不足、DNS 解析被污染或落到非最优节点、资源未被缓存(Set-Cookie/Cache-Control限制)、TLS 握手回退到非最优版本。检查 CDN 的 cache-hit 率、使用 traceroute 定位回源路径,并确认静态资源已支持长缓存和版本化;必要时在该区域增加边缘或使用多区域回源。
问:CDN 与多区域回源会不会大幅增加费用?如何控制成本?
答:会增加带宽和请求费用,特别是回源流量和高带宽峰值。控制方法:通过更长的 Edge TTL 降低回源;静态文件做版本化减少频繁刷新;利用免费或低价套餐(Cloudflare Free/Pro);设置 WAF/速率限制减少恶意流量。对热点资源考虑使用存储加速(例如 S3/OSS + CDN)以降低源服务器出站成本。
问:如何判断本次优化是否成功?有哪些关键指标?
答:关键指标包括:全球平均请求耗时(time_total)下降、95/99 百分位延迟降低、CDN 缓存命中率上升到 80%+(视站点而定)、回源流量显著下降、TLS 握手时间缩短、用户感知首字节时间(TTFB)和完整载入时间改善。以改造前后对比数据并做 A/B 测试为准,达到业务定义的 SLA 即为成功。