1.1 说明:台湾用户访问国际节点时延受海缆与路由影响明显,合理在台北/高雄部署 VPS 并结合 CDN 能显著降低 TTFB 与页面加载时间。
1.2 目标:本文给出从系统级优化、Web 服务器配置到 CDN 策略的可复现步骤,适用于 Nginx/Apache、WordPress、静态站点与 API。
2.1 选购建议:优先选择有台北或高雄 POP、带宽可 burst、提供高速 I/O 的实例(例如 1Gbps 公网),供应商示例:GCP 台湾区、AWS ap-northeast-1(近日本但选本地更佳)、本地提供商如台灣雲端或 PChome。
2.2 网络测试:获得 IP 后在本地用 ping/traceroute/MTR 测试延迟与丢包;示例:mtr -rwzbc 100 your_server_ip。
3.1 启用 BBR(Linux):编辑 /etc/sysctl.conf 添加 net.core.default_qdisc=fq, net.ipv4.tcp_congestion_control=bbr,然后执行 sudo sysctl -p。确认 sudo sysctl net.ipv4.tcp_congestion_control 输出 bbr。
3.2 调整网络参数:在 sysctl.conf 添加示例参数:net.core.somaxconn=1024, net.ipv4.tcp_tw_reuse=1, net.ipv4.tcp_max_syn_backlog=4096;加载后重启网络服务。
4.1 安装:Ubuntu 示例 sudo apt update && sudo apt install nginx -y。确保使用带 HTTP/2/3 与 brotli 支持的版本(或自行编译 nginx + brotli 模块)。
4.2 gzip 与 brotli 配置(/etc/nginx/conf.d/extra.conf 示例):gzip on; gzip_types text/css application/javascript application/json image/svg+xml; brotli on; brotli_types text/plain text/css application/javascript application/json image/*; 这样静态资源传输压缩率更高。
5.1 资产哈希命名:在构建阶段(Webpack/Gulp)开启 contenthash,使静态资源如 app.abc123.js 永久缓存,同时 HTML 引用更新。
5.2 Nginx 缓存头:location ~* \.(js|css|png|jpg|svg)$ { add_header Cache-Control "public, max-age=31536000, immutable"; } 对于 HTML 使用短 TTL。
6.1 proxy_cache 基本配置(/etc/nginx/conf.d/cache.conf):proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m max_size=10g inactive=60m use_temp_path=off; 在 location 使用 proxy_cache mycache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 并设置 proxy_cache_key $scheme$host$request_uri。
6.2 FastCGI 缓存(PHP-FPM):fastcgi_cache_path /var/cache/nginx/fcgi levels=1:2 keys_zone=fcgicache:100m inactive=60m; 在 PHP location 添加 fastcgi_cache fcgicache; fastcgi_cache_valid 200 5m; 用于加速动态页面。
7.1 安装 Redis:sudo apt install redis-server -y,启动并开启持久化或配置为内存优先。用作 WordPress 的 object-cache(使用 redis-object-cache 插件)或 PHP session 存储。
7.2 PHP 配置:安装 php-redis 并在应用层配置缓存池;这可减少数据库查询与后端渲染延迟。
8.1 DNS 与代理:在 Cloudflare 控制台将域名解析指向台湾 VPS,启用橙云(代理)。设置 SSL 为 Full(strict)并启用 HTTP/2 和 HTTP/3(QUIC)。
8.2 Page Rules 与缓存级别:创建 Page Rule 对静态目录设置 Cache Level: Cache Everything(对静态且版本化的资源适用),Edge Cache TTL 设置为 1 month;对动态页面使用 Bypass cache 或不缓存。
8.3 缓存清理与版本化:优先使用文件名哈希方式避免频繁 purge;必要时用 API 进行按路径 purge(curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/purge_cache" ...)。
9.1 选择有台湾 POP 的 CDN:若目标主要为台湾用户,可选本地 CDN(如 Cloudflare、Akamai、国内 CDN 服务在台湾有节点)并确保多个 POP 覆盖台北/高雄。
9.2 Origin Shield 与回源控制:启用 Origin Shield 或设置 CDN 回源缓存,减少回源请求频率与带宽消耗。
10.1 测试工具:使用 curl -I https://yourdomain 来检查 Cache-Control 与 Server 头;使用 webpagetest.org、GTmetrix 与 Lighthouse 做完整页面性能分析。
10.2 日志与命令:查看 Nginx 访问日志 tail -f /var/log/nginx/access.log;检查 proxy_cache 状态在 header 中查找 X-Cache 或 X-Cache-Status(自定义添加 add_header X-Cache-Status $upstream_cache_status;)。
11.1 步骤清单:1) 购买台湾节点 VPS 并完成基本安全配置(防火墙、SSH key);2) 启用 BBR 与网络优化;3) 安装 Nginx 并开启 gzip/brotli;4) 配置静态资源缓存与版本化;5) 配置 proxy_cache 或 fastcgi_cache;6) 部署 Redis 缓存;7) 在 CDN 平台接入并设置 Page Rules;8) 进行线上压测与监控。
11.2 回滚与灰度:上线新缓存策略先小范围灰度(子域名或指定 IP),确认无误后全站切换,保留快速回滚脚本清除缓存或关闭 proxy_cache。
12.1 答:用 curl 带头信息检测:curl -I -H "Cache-Control: no-cache" https://yourdomain 查看响应头中的 X-Cache 或 Cloudflare 的 CF-Cache-Status(HIT/MISS)。若使用自定义 X-Cache-Status,请在 Nginx 配置 add_header X-Cache-Status $upstream_cache_status; 重载后观察。
13.1 答:最佳做法是文件名带哈希(如 style.abc123.css),构建工具自动生成新文件名。若不能更名,使用 CDN 的 API 按路径 purge 缓存或设置较短的 Edge Cache TTL,并在发布时执行全域或针对路径清理。
14.1 答:推荐组合为:前端使用 CDN 缓存静态资源+页面层可用 CDN 的 Cache Everything(慎用),后端使用 Nginx fastcgi_cache 缓存 HTML 片段,应用层启用 Redis 对象缓存与 PHP OPcache,数据库层做慢查询优化。上线后通过日志与工具观察 HIT 率并微调 TTL。