我的 Typecho 博客最近访问越来越慢,首页加载要 1 秒多。查了一圈,发现几个关键问题没处理。优化完之后速度直接翻倍,这里把过程记录一下。
问题一:OPcache 没开
PHP 默认每次请求都要重新解析和编译 PHP 文件,这是最大的性能浪费。启用 OPcache 后,编译结果缓存在内存里:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60重启 PHP-FPM 后,首页首字节时间从 0.88 秒降到了 0.73 秒。
问题二:Gzip 压缩不充分
Nginx 默认的 Gzip 配置只压缩了 HTML,JS/CSS/JSON 都没压。补充配置:
gzip_types text/plain text/css application/json
application/javascript text/xml application/xml
application/xml+rss text/javascript image/svg+xml;
gzip_comp_level 5;
gzip_min_length 256;
gzip_vary on;首页从 77KB 压缩到了 7KB,传输量减少了 91%。
问题三:PHP-FPM 进程太少
2 核服务器只开了 5 个 PHP 进程,并发一上来就排队。调整到 15 个进程后,高并发下响应明显快了。
问题四:静态资源没缓存
CSS、JS、图片这些静态文件每次都要重新请求,白白浪费带宽。加个 30 天缓存:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}最终效果
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 首页首字节 | 0.88s | 0.73s |
| 首页总耗时 | 1.22s | 0.90s |
| 传输大小 | 77KB | 7KB |
总结
Typecho 本身已经很轻量了,瓶颈通常不在代码层面,而在运行环境。以上四个优化都是改配置,不用动代码,十分钟就能搞定。如果你的博客也跑在低配 VPS 上,强烈建议逐项检查一遍。