根据 Akamai 的数据,页面加载延迟 100 毫秒可能会使转化率下降 7%,而 2 秒的延迟则可能导致跳出率惊人地增加 103%。
- 无论小红书调研还是linux.do调研,发现wordpress性能问题都是最大的讨论,所以解决它。
- 以下是针对Wordpress 、WooCommerce商店性能优化的综合技术指南,结合了 参考资料中的关键方案,分为六个核心优化方向:
一、移除冗余功能与基础优化
-
禁用非必要功能
-
使用插件如 Disable Bloat for WordPress & WooCommerce(链接5)关闭:
- WooCommerce后台广告、购物车片段(
cart-fragments.js
) - 多余仪表盘小工具、WP心跳(
heartbeat.js
) - 禁用未使用的插件功能(如Elementor冗余模块)
- WooCommerce后台广告、购物车片段(
-
注意重点:减少HTTP请求与后台CPU占用
-
CPU 100% 解决 : How To Fix High CPU Usage In WordPress [20 Steps]
-
-
解决CPU过载问题
二、多级缓存策略
-
静态页面缓存
-
WP Super Cache(链接2)配置:
- 启用 Expert Mode
- 设置缓存超时3600秒,关闭已知用户缓存
- 预加载模式(Preload)减少实时生成压力
- 最佳配置教程:The Ideal WP Super Cache Settings 2025 (All Tabs)
-
Cloudflare APO(链接3):
- 通过Workers KV将HTML缓存至全球边缘节点
- 减少源服务器请求,提速70-300%
-
-
对象缓存
- Redis Object Cache(链接4):
三、媒体文件优化
-
图片自动压缩
-
- WebP/AVIF格式转换(节省50-80%体积)
- 设置最大宽度(如1920px),保留EXIF元数据
-
GIF压缩:使用 Compress GIF(链接13)缩减帧数
-
-
视频优化
-
MP4压缩工具(链接9):
- 降低分辨率(1080p→720p)
- 调整CRF(24-28平衡画质与体积)
-
托管大文件:将下载资源移至网盘/CDN
-
四、数据库与服务器调优
-
数据库清理
-
WP-Optimize:
- 清理修订版(
wp_posts
中post_type=revision
) - 优化InnoDB表碎片
- 清理修订版(
-
Redis替代MySQL查询:
-
-
CDN与HTTP/2
-
推荐方案:
- 静态资源:Cloudflare CDN(低价高性能)
- 动态请求:Cloudflare APO + Cloudflare相关配置缓存
-
Cloudflare规则:
- 缓存HTML(Page Rule:
*example.com/*
,缓存级别=所有内容) - 绕过
/cart/
、/checkout/
路径 - 配置好cloudflare防火墙,恶意流量是性能的大障碍
- 配置好cloudflare/谷歌 验证码,恶意提交表单也是性能大障碍
- 缓存HTML(Page Rule:
-
五、高流量压力测试
-
负载测试
-
扩展策略
-
垂直扩展:独立数据库RDS,升级云服务器CPU/RAM
-
水平扩展:
- 负载均衡( ALB + Auto Scaling)
- 读写分离(MariaDB Master-Slave 主从数据库)
-
六、实时监控工具链
工具 | 用途 | 关键指标 |
---|---|---|
GTmetrix(链接15) | 页面加载分析 | LCP, TBT, CLS |
Query Monitor(链接17) | PHP/DB诊断 | 慢查询(>0.05s), 重复查询 |
SpeedVitals(链接10) | Core Web Vitals | FID, INP |
Pingdom(链接7) | 全球节点监控 | 可用性, TTFB |
通过系统化实施缓存策略、媒体精简、数据库优化及负载测试,可构建高弹性Wordpress / WooCommerce架构。建议每月用 Loader.io 验证承载上限,并持续用 Query Monitor 消除性能瓶颈。
以下是性能实战:
- 安装 性能监控工具(如tideways),一边测试性能,一边观察实际瓶颈。
第一步: 用lighthouse测试一下
观察问题 :首先要解决瓶颈问题。现在发现问题是 ”Reduce initial server response time“ — 减少初始服务器响应时间。
再用Gtmetrix测试一下:
观察问题 :首字符响应时间过长 ,TTFB 达 2.6秒!
第二步: 安装性能监测工具
安装如下监测工具:
Query Monitor – The developer tools panel for WordPress – WordPress plugin | WordPress.org 最好的性能检查插件
tideways.com/ 最好的服务器性能检测工具
知道要解决的问题在于 TTFB, 那么现在就是 想办法解决。安装性能监控工具 ,看底层 是哪里造成 这个
性能问题 :
发现原因:1 ,外部服务访问慢的问题 ,2 ,sql执行过多的问题。
解决它 ,然后测试再看看情况。
Q: SQL执行过多的解决方法?
A: 解决方法
mysql性能优化 :
1.1 myisam 转为 innodb,提高并发
1.2 Sql 300条太多 ,要检查是不是可以减少 ,例如检查区块编辑器问题。
1.3 Mysql 的自身性能调高
加上对象缓存:
WordPress有一个内置的对象缓存WP_Object_Cache。它于2005年推出 ,提供了一种自动将数据库中的任何数
据存储在PHP内存中的方法 ,以防止重复查询。
利用对象缓存 :Object Cache ,是wordpress 原生的功能 ,参考 :什么是对象缓存以及如何在WordPress中使 用它 | WordPress大学 (wpdaxue.com)
第三步: 检查并发能力
如何通过负载测试来了解网站在高流量情况下的性能。负载测试可以帮助网站所有者了解他们的服务器在面对流量激增时的表现,以及托管基础设施的承载能力。
Application Load Testing Tools for API Endpoints with loader.io
Free tool for web application load testing that allows for the simulation of concurrent connections to your web application's APIs
How to Stress Test a WordPress Website – The Definitive Guide
jmeter.apache.org/ 老牌压测工具。非常不错的本地压力测试工具 ,充分利用本地的强大计算和网络能力 ,可以对比测试结果 ,方便排查性能问题原因。
An Introduction to Load Testing | DigitalOcean 压力测试原理
重要3指标:
Requests per second: 19.66 [#/sec] (mean)
//吞吐率 ,大家最关心的指标之一 ,相当于 LR 中的每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Time per request: 5087.180 [ms] (mean)
//用户平均请求等待时间 ,大家最关心的指标之二 ,相当于 LR 中的平均事务响应时间 ,后面括号中的 mean
表示这是一个平均值
Time per request: 50.872 [ms] (mean, across all concurrent requests)
//服务器平均请求处理时间 ,大家最关心的指标之三
第四步: 提高并发能力
高并发架构设计(三大利器:缓存、限流和降级)。实施方法: 增加各层缓存:
1.对象缓存。我们将在下面对此进行更详细的介绍 ,但是对象缓存涉及存储数据库查询 ,以便下次需要数据时 ,无需查询数据库即可从缓存中传递数据。
2.页面缓存。页面缓存涉及存储页面的整个HTML ,以便在后续视图中可以生成和显示内容(包括文件和数据 库查询) ,而无需WordPress每次都这样做。
3.操作码缓存。操作码缓存涉及在每个请求之间编译PHP代码。为了执行PHP代码 ,PHP编译器必须先编译代码 ,然后生成可执行代码供服务器执行。操作码缓存已编译的代码。
4.CDN缓存。 内容分发网络( CDN )使用世界各地的边缘服务器来存储静态网站文件(即CSS ,JavaScript 和媒体文件) ,以便更快地将其分发给与主机服务器地理上相距遥远的用户。
5,浏览器缓存。浏览器缓存是指将网页中的资源(如HTML、CSS、JavaScript、图像等)存储在用户的浏览器内部,以便在后续请求同一资源时可以直接从本地缓存中获取,而无需再次从服务器下载。
Q: 如何增加静态缓存 / 页面缓存 ?
A:对于网站来说 ,静态缓存 /页面缓存 是解决性能的最厉害的武器 ,这里推荐使用WP Super Cache插
件。 WP Super Cache – WordPress plugin | WordPress.org
The Ideal WP Super Cache Settings 2025 (All Tabs) WP Super Cache 最佳配置
Q: 如何增加浏览器缓存 ?
A:可以依靠插件设置,例如 WP Super Cache . 常见用法:
使用浏览器缓存可以通过设置响应头中的Expires和Cache-Control字段来控制缓存的行为。
1.使用Expires字段:Expires字段指定了缓存的过期时间,是一个具体的日期和时间。服务器可以在响应头中添加Expires字段,告诉浏览器在该时间之前可以直接从缓存中获取资源,而无需再向服务器发起请求。例如:Expires: Mon, 31 Dec 2022 23:59:59 GMT。
2.使用Cache-Control字段:Cache-Control字段提供了更灵活的缓存控制选项。可以通过设置max-age指令来指定缓存的最大有效时间,单位是秒。例如:Cache-Control: max-age=3600 表示资源可以在1小时内直接从缓存中获取。还可以使用其他指令,如no-cache表示缓存但不使用缓存、no-store表示禁止缓存等。
Q: 如何增加CDN缓存 ?
A: 使用 cloudflare插件: Cloudflare – WordPress plugin | WordPress.org
加强CDN缓存功能,使用APO: How to Set up Cloudflare APO for WordPress – A Deep Dive into Boosting Performance up to 300%
Q: 如何增加操作码缓存?
A: 使用 php OPCache.
Q: 怎样调整PHP性能?
A: 1 宝塔面板——软件管理—— PHP管理——性能调整 ,根据服务器内存数量和自己建站的数量进行并发数量设置。
2 升级PHP
Q: 怎样处理图片性能?
A: 1 图片压缩
2 On-demand Image Resizing 图片加载方面:用srcset:
Q: 怎样调整服务器性能?
A: 宝塔Nginx 和 PHP-FPM方面的优化 服务器端优化与 Nginx 和 pm-static :
php-fpm:动态(dynamic)、按需(ondemand)和静态(static),尝试使用静态(static)设置 Server-side Optimization with Nginx and pm-static — SitePoint 尝试了 pm = static 设置,允许我们的 PHP 进程占用服务器资源的最大值,避免交换或使 CPU 停止。这个设置意味着我们始终在系统的最大限制内强制最大化性能。这也意味着——在服务器的限制内——不会有任何进程生成的额外时间成本。
php-fpm.conf有两个至关重要的参数 :
Q: 怎样 去掉没用的插件和功能:
A:利用插件 disable-dashboard-for-woocommerce 插件
Disable-wordpress-updates 插件
Q: 并发问题的解决要注意什么?
A: 并发的2个问题针对解决 :
1 ,是不是并发调度问题
2 ,是不是并发处理问题
Q: 怎样确定需要多少并发处理能力?
A: 并发处理能力计算:
1 ,从GA ,日志等检查每天的流量 ,计算正常时间每分钟访问的流量和人次。
2 ,例如应付普通日常是 250人/分钟 ,那么为了活动做好准备 ,同时也要并发测试 2500人/分钟 ,。 3 ,同时也要为压力测试做好准备 ,达到 10000人/分钟 ,能够让服务器不宕机。
4 ,要测试不同种类的页面并发能力。重点 :首页 ,结算页 ,商品页 ,列表页。
注意 :我们不是BAT,没有那么高并发 ,流量都是要广告买回来的。按实际情况准备好10倍的应付能力就可以了
Q: 怎样测试 checkout结算页 ?
A: checkout url可以这样测试 https://woocommerce.liang/index.php/checkout/?add-to- cart =191&variation_id =193
Q: “Unaccounted Wait” 很高 ?
A: 当看到tideways显示 ,”Unaccounted Wait” 很高 ,那么就可能要垂直升级服务器性能了
Q: 如何估计您的托管服务可以处理多少网站访客?
A: 参考文章: How to Estimate How Many Website Visitors Your Hosting Can Deal With
这篇文章提供了一种方法来估计您的网站托管服务能够同时处理的访客数量。文章强调了在准备应对流量高峰时,了解服务器资源使用情况的重要性。文章提出了一个公式来估算网站的最大并发用户数,该公式考虑了 CPU 核心数、页面响应时间、用户点击频率等因素。
文章首先解释了如何查看服务器的 CPU 核心数,这对于了解服务器处理 PHP 请求的能力至关重要。接着,文章讨论了如何计算平均 PHP 请求消耗的 CPU 时间,以及如何将这个数据与用户点击频率结合起来,以估算出网站的最大并发用户数。
文章还提到,前端性能(如通过 Pingdom Tools 或 PageSpeed Insights 测量的性能)在扩展性方面不是主要瓶颈,真正的瓶颈在于服务器能够处理多少流量和负载。为了提高网站的扩展性,可以采取减少资源消耗或增加服务器资源的措施。文章建议使用加速域名(Accelerated Domains)等技术来提高扩展性,同时保持在单一服务器设置上运行的时间更长。
从GA看看 ,每分钟的用户有多少人在线。 例如 ,我们普通需求是平时 250人/min ,要达到 2500 人/min。
- 利用公式计算 :( cpu核数 / 页面响应时间) 60 * 用户点击频率 = 最大并发用户数 。 用户点击频率 = 平均1次/min(普通独立站)
( 4核 / 0.400s ) * 60 * 1 = 600 人/min
(32核 / 0.323s) * 60 * 2 = 11 880人/min
- 简化公式 :吞吐率60 = 承受最大并发用户数的能力
250人/min ,那么就需要 吞吐率 达到 4/s Requests per second
2500人/min ,那么就需要 吞吐率 达到 40/s Requests per second
10000人/min, 那么就需要 吞吐率 达到 160/s Requests per second
Q: 对象缓存/redis性能有问题?
Q: mysql 有性能问题?
Q: 怎样限流?
再强大的系统,也怕流量短事件内集中爆发,就像银行怕挤兑一样,所以,高并发另一个必不可少的模块就是限流。限流是一种通过控制请求的速率或数量来保护系统免受过载的技术。流控的精髓是限制单位时间内的请求量,最大程度保障系统的可靠性及可用性。
A: 可以利用 cloudflare 设置限流:
- 保护后端服务免受大流量冲击,避免服务崩溃;
- 对 API 调用进行限制,保证公平使用;
- 防止恶意用户对服务进行洪水攻击;
Q: 怎样降级?
降级是在高并发或异常情况下舍弃非关键业务或简化处理的一种技术手段。
A: 可以利用disable相关插件