WordPress慢的原因无非几个:PHP执行慢、数据库查询多、静态资源没缓存、图片太大、插件写得太烂。逐个解决就行。
1. 选对主机
别用廉价共享主机,CPU和内存都受限。我目前用雨云,配置灵活,PHP 8.2 + Nginx + Redis 一套下来成本很低,跑 WordPress 响应时间稳定在200ms以内。服务器位置选离用户最近的节点,延迟能降一半。
2. PHP版本必须8.x
PHP 5.6/7.4 性能差一大截。确认版本:
php -v
如果低于8.0,去主机面板或服务器里升级。PHP 8.2 比 7.4 快约30%,这是零成本的提升。
3. 启用页面缓存
动态页面每次都查数据库,纯属浪费。用缓存插件把页面存成静态HTML。
我推荐 WP Rocket(付费)或 Flying Press(轻量)。免费方案用 WP Super Cache 或 Litespeed Cache(如果服务器用LiteSpeed)。
配置要点:开启页面缓存、浏览器缓存、Gzip压缩。别开太多选项,缓存过期时间设1小时以上。
4. 数据库优化
WordPress默认表结构有坑,比如wp_options表经常膨胀到几十万行。定期清理:
– 删除post revisions(版本修订)
– 清理spam评论、trash
– 优化表(OPTIMIZE TABLE)
用插件 WP-Optimize 或 Advanced Database Cleaner。或者自己写SQL:
DELETE FROM wp_posts WHERE post_type = 'revision';
OPTIMIZE TABLE wp_options;
建议每周跑一次,cron任务或插件定时执行。
5. 图片压缩
图片是带宽杀手。上传前先用 TinyPNG 或 Squoosh 压缩一次。WordPress 里用 WebP Express 或 Imagify 自动转 WebP 格式。
主题里加这段让浏览器优先加载WebP:
add_filter('wp_get_attachment_image_src', function($image) {
if (isset($image[0]) && strpos($image[0], '.jpg') !== false) {
$image[0] = str_replace('.jpg', '.webp', $image[0]);
}
return $image;
});
6. 减少HTTP请求
合并CSS/JS文件,减少DNS查询。用 Autoptimize 插件:
– 合并CSS
– 合并JS
– 内联关键CSS(首屏样式直接写在HTML里)
– 延迟加载JS(defer/async)
注意:合并后可能破坏某些插件功能,逐个测试。
7. 使用CDN
静态资源(图片、CSS、JS)交给CDN。Cloudflare免费版够用,开启APO(Automatic Platform Optimization)能缓存HTML页面。雨云自带CDN加速,直接绑定域名就行,省去配置麻烦。
8. 禁用无用功能
WordPress自带一堆用不上的功能,比如:
– Emoji脚本
– 嵌入(oEmbed)
– XML-RPC(如果不用)
– 文章修订版本(限制数量)
在wp-config.php加:
define('WP_POST_REVISIONS', 3); // 保留3个版本
define('DISABLE_WP_CRON', true); // 用系统cron替代
functions.php里移除垃圾:
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'rest_output_link_wp_head');
9. 数据库查询优化
用 Query Monitor 插件检查慢查询。常见问题:
– 页面用了太多WP_Query循环,改成用 get_posts 或直接SQL
– 没有索引的meta查询
加索引:
ALTER TABLE wp_postmeta ADD INDEX meta_key_index (meta_key);
ALTER TABLE wp_postmeta ADD INDEX post_id_index (post_id);
10. 对象缓存
WordPress默认每次请求都查数据库。用 Redis 或 Memcached 缓存查询结果。
服务器装Redis:
apt install redis-server
安装 Redis Object Cache 插件,启用后数据库查询次数从几百降到个位数。
11. 主题和插件审查
换主题前用 Lighthouse 测性能。有些主题(比如某些页面构建器主题)生成大量内联样式和脚本,直接拉垮速度。
插件方面,禁用一切非必要的。尤其是:
– 安全扫描插件(只留一个)
– SEO插件(只留Rank Math或Yoast)
– 社交分享插件(用代码手动加)
12. 启用HTTP/2和Brotli
HTTP/2支持多路复用,同时加载多个资源。Brotli压缩比Gzip高20%。Nginx配置:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
雨云面板直接勾选HTTP/2和Brotli,不用自己配。
:测一下
用 GTmetrix 或 WebPageTest 跑分。目标:首次内容渲染(FCP)< 1.5秒,LCP < 2.5秒,总阻塞时间 < 200ms。
如果分数上不去,看瀑布图里哪个请求慢,针对性优化。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容