性能与运维
缓存、CDN 与 CI。
性能与运维
这一课你将能做到
- 给站点配齐三层缓存(页面缓存 / Redis 对象缓存 / OPcache)并用命令验证命中
- 用 WP-CLI 完成日常运维:备份、更新、搜索替换、定时任务真实化
- 做一轮性能体检:慢查询、autoload 选项、图片与 CDN,并给出可量化的优化前后对比
为什么要学
WP 默认「每次请求都全量执行 PHP + 查库」,裸奔状态撑不了多少并发。但它的性能天花板远比传说中高:缓存配对后 90% 以上请求不碰 PHP。运维能力(备份、更新、排障)则是「你的站点敢不敢上生产」的及格线。
人话:缓存像自取餐柜——页面缓存是「整份餐提前打包」(连 PHP 都不进),对象缓存是「常用配菜提前备好」(查库结果进 Redis),OPcache 是「菜谱翻译一遍反复用」(PHP 字节码缓存)。越靠前的柜子命中,省的力气越多。
先建立图像
请求 → CDN(静态资源/图片) → 页面缓存(整页HTML) → OPcache(字节码)
→ 对象缓存 Redis(查询结果/fragments) → MySQL
命中任一层即短路返回。目标:动态页 90%+ 请求止步于第 2 层。
跟着做
步骤 1:先测量再优化
装 Query Monitor 看每页:SQL 条数、耗时、内存。基线示例:首页 68 条查询、180ms。没有基线,一切「优化」都是玄学。
# 粗测响应时间
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s 总耗时: %{time_total}s\n" http://localhost:8080/
步骤 2:对象缓存上 Redis
docker-compose.yml 加服务:
redis:
image: redis:7-alpine
wp-config.php:
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PREFIX', 'qrocmq:' );
装 Redis Object Cache 插件并启用:
wp plugin install redis-cache --activate
wp redis enable
wp redis status
验证:连刷几页后 wp cache type 输出 redis;Query Monitor 中重复查询变为命中缓存。代码侧主动用:
$courses = wp_cache_get( 'courses_featured', 'qrocmq' );
if ( false === $courses ) {
$courses = get_posts( array( 'post_type' => 'course', 'numberposts' => 6 ) );
wp_cache_set( 'courses_featured', $courses, 'qrocmq', 3600 );
}
步骤 3:页面缓存
轻量方案用 WP Super Cache(官方系),或 Nginx fastcgi_cache:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WP:100m inactive=60m;
server {
location ~ \.php$ {
fastcgi_cache WP;
fastcgi_cache_valid 200 301 10m;
# 登录用户、带 cookie 的请求跳过缓存
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-Cache $upstream_cache_status;
}
}
验证:curl -I 第二次请求出现 X-Cache: HIT。注意:含 nonce 的表单页、登录用户必须排除缓存。
步骤 4:OPcache(PHP 层)
生产 php.ini: