当初搭建woocommerce站点时,为了访问速度优化的事可真没少折腾,几乎翻遍了全网的优化教程,没有一篇教程是真的讲到了原理,都是停留在表面功夫,最后根本解决不了问题,心态都崩了。后面潜心研究网站访问速度慢的底层原理,总结出一套自己的网站速度优化经验,现分享给各位网友。
网站访问速度通常与硬件条件,底层服务和站点设置三个层面有关,以下将分别细述。
硬件条件
通常是指服务器的cpu跑分、内存大小、硬盘读写速度,网络情况等。这就跟我们的电脑一样,如果cpu太差,内存太小,硬盘读写速度太低,那么用起来必然会卡,所以选择一家好的云服务器很重要。可以跑一下网上的融合怪vps评测脚本看看情况。
CPU
更推荐购买使用amd的cpu的云主机,因为单核性能高,主频高,跑分好,云服务器的cpu都是虚拟的cpu,会与其他云服务器共享,当厂商超售主机过多时,或者是邻居们用的cpu比较多时,那你的cpu资源自然会变少,所以其实cpu的跑分并不是会一成不变的。如果日ip不高于100,只是跑一两个wordpress或者discuz站点的话,SysBench CPU 测试单核不低于1000,多核不低于2000。如果是要跑woocommerce站点的话,建议SysBench CPU 测试单核不低于1500,多核不低于3000。更高的上限有助于更好的应对突发的访问流量,然后有的woocommerce操作还是挺消耗cpu资源的,可能点某个按钮就会瞬间把cpu使用率拉到100%
内存
这里主要是指内存的大小,因为内存频率对速度的影响比较小,内存已使用的大小控制在70%以内比较合适,超过80%就容易发生卡顿缓慢。建议wordpress或者discuz站点2G内存起步,woocommerce站点4G内存起步。
硬盘I/O
有的云服务器还是用的机械硬盘,大家应该还记得2010年左右win7时代电脑开机要一分多钟的时候吧,那时候大多数用的都是机械硬盘,现在谁要是还用机械硬盘当做系统盘,电脑真的慢死了。服务器也是同理,wordpress是特别吃硬盘I/O的,所以速度越快越好,建议硬盘4k读写速度不要低于60MB/s,越高越好。
网络
主要是看带宽 / 延迟 / 丢包率/线路路由,如果用的是国内的公有云,只在国内访问的话,那么基本看带宽够不够就行了,源站没有放图片和视频的,几兆的小水管也够用,要是放图片和视频就不够了。
如果用的是国外的云服务器,还要保证国内访问质量的话,情况就很复杂了,优先看线路,线路有分普通线路,优化线路,骨干线路等等,优化线路又以CN2优化线路最好,不同的线路主要是在早高峰(08 : 00 -- 10 : 00)和晚高峰(20 : 00 -- 23 : 00)这两个时间段会有不一样的表现,普通线路表现为丢包率和延迟变高很多,优化线路则影响较小。网站最好是把延迟控制在200ms以内,丢包率10%以内,这样才不会对访问体验游太大影响。
底层服务优化
php调优
1、安装好插件:fileinfo,opcache,redis,imagemagick,exif,igbinary,zstd。其中opcache,redis是最重要的,这两个插件能极大提升网站访问速度
2、Session configuration改成使用redis

3、不要用宝塔自带的Optimization优化方案,一点都不准的,将你的服务器硬件配置,php配置文件,FPM配置文件,Load average平均负载,跑了几个站点,日ip多少,这些情况发给ai,让ai给你的php配置文件,FPM配置文件的参数进行调优。因为参数特别多,所以让ai来帮忙看看怎么调优是最方便的了,调完之后需要持续观察数天Load average平均负载的数值,日志和慢日志,定期发给ai看看是否还需要调整参数。
php配置文件主要是调整Opcache参数和脚本资源限制的参数,FPM配置文件主要是调整pm.开头的几个参数。
4、wordpress安装WP OPcache插件,持续观察数天memory,hit rate,keys的数值,确保memory和keys不超出100%,hit rate一定要到100%,如果达不到,请调整php配置文件中Opcache的参数。


mysql调优
不要用宝塔自带的优化方案,将你的服务器硬件配置,mysql配置文件,msql当前状态里面的数值,跑了几个站点,日ip多少,这些情况发给ai,让ai给你的mysql配置文件的参数进行调优。
调优完成后需要持续观察数天msql当前状态里面的数值,看看是否达到瓶颈。
redis调优
将你的服务器硬件配置,redis配置文件,redis当前状态里面的数值,跑了几个站点,日ip多少,这些情况发给ai,让ai给你的redis配置文件的参数进行调优。
调优完成后需要持续观察数天redis当前状态里面的数值,看看是否达到瓶颈。
swap交换空间
宝塔到应用商店安装Linux Tools,调整swap交换空间
- 4G以内的物理内存,SWAP 设置为内存的2倍,不超过4G。
- 4-8G的物理内存,SWAP 等于内存大小。
- 8-64G 的物理内存,SWAP 设置为8G。
- 64-256G物理内存,SWAP 设置为16G。
计划任务释放内存
到宝塔计划任务这里新建任务,每天在半夜时释放内存

站点层面
redis插件
安装并启用Redis Object Cache插件,观察数天之后,命中率要在95%以上才正常,达不到请调整redis配置文件的参数

Code Profiler分析
建议尽量使用轻量化的主题和插件,尽量在测试环境中测试好插件好不好用在安装到正式环境中,因为主题和插件安装再卸载的话也会在系统中留下大量痕迹,后期遇到问题很难优化。
安装Code Profiler插件,这个是分析页面访问时每个主题和插件在页面加载时占用了多长的时间,分析完之后再根据具体的插件情况进行调整


Asset CleanUp Pro优化
有的插件很影响速度,但是又不得不启用,例如Stripe的付款插件,只需要在woocommerce结账页面加载即可,此时你可以安装Asset CleanUp Pro(tb有pojie的),让插件只在特定页面加载,支持#作为通配符,同理你也可以让某些只在后台页面才需要使用的插件只在后台页面才加载,配合Code Profiler分析进行优化

Query Monitor分析
安装Query Monitor插件,这个插件可以看得到页面加载时间,页面内存使用量,数据库查询时间和次数,HTTP API请求时间和数量。数据库查询一般可以靠redis插件降下来,次数越少越好,查询时间要尽量控制在0.3秒内,越短越好。HTTP API请求时间和数量是非常影响访问时间的一个指标,这些一般是页面的插件会发起一些api请求,例如插件自动检查更新等等,然后要优化的话就是具体情况具体分析和处理了



Snitch/HTTP Requests Manager优化
在Query Monitor看到的一些非常影响速度又没有用的HTTP请求时,可以使用这两个插件进行封禁,这两个插件我用的不多,因为感觉不是算特别好用,大家可以自行体验一下,如果有更好用的替代插件欢迎大家评论区反馈




本地加载谷歌字体
国内访问时需要执行此操作,astra主题自带此功能,其他主题可以找相关的插件实现

移除Avatars头像
国内访问时需要执行此操作,因为这个头像引用的资源在国内访问速度很差

浏览器开发者工具分析
浏览器按F12打开开发者工具,看一下网页各个资源的加载情况,一个页面的加载顺序是浏览器先发起一个访问请求,然后服务器返回一个文档文件,里面记录了这个页面所需要的css,js,图片字体等资源的加载顺序,然后其他的资源按顺序加载。如果是第一个文档等待服务器响应时间过长,则原因一般都是服务器速度慢,至于为什么慢还需要结合其他的分析步骤来分析。请注意协议一定要是h2或者和h3协议,然后我们可以看下什么资源的加载占据了这么长的时间,如果看不到,可以下载成har文件让ai分析一下,然后再做针对性的分析和处理。有的人可能会上传很大的图片到网站上,这也会导致页面加载速度很慢,所以建议图片是需要压缩再上传,建议将图片控制在200kb以内,jpg和webp会比png要小,也可以托付给其他的cdn或者图床工具以减轻服务器压力。


慢日志分析
如果网站还是慢,可以看看是打开链接对应的页面反应慢还是点击某个按钮执行某个操作(不是链接跳转的按钮,是带处理步骤的按钮,例如加入购物车,提交订单,导入图片等)之后反应慢。如果是点击某个按钮执行某个操作反应慢的话,可以到php慢日志和mysql慢日志查看是否有新的慢日志产生,如有则可以发给ai分析,还可以看下Redis,OPcache负载是否正常。
禁用 wp-cron
在wordpress6.9版本以前,wordpress的定时任务(Cron)是在页面输出前执行,所以会延迟页面渲染。有时候你会看到Query Monitor会有一些doing_wp_cron的http请求,这些就是在执行定时任务。如果你在使用wordpress6.9之前的版本,则可以考虑把wp-cron禁用,然后改成宝塔面板的定时任务来触发,网上教程很多,这里不赘述了。或者更新到wordpress6.9之后的新版本也可以解决这个问题。
缓存插件
WP Super Cache,W3 Total Cache,WP Rocket这三个都挺不错的,免费的推荐WP Super Cache就够用了,不过使用前要排除好不需要缓存的页面,如果是woocommerce网站使用了侧边栏购物车的话则不适合用了。其实如果网站访问量不是特别大的话,缓存插件用不用都没什么问题。
后记
通常按照以上步骤分析处理完网站,一般就能找到反应慢的原因和解决方法了。我这里只是简单总结性的说了一下分析的步骤,有一些细节层面的东西大家可以查百度必应谷歌或者问ai,还可以在评论区留言。曾经我因为这个wordpress的woocommerce站点网站速度慢的问题困扰了很久,翻遍了全网所有的教程资料再加上自己仔细研究才总结出以上经验,现在分享给各位网友,希望能对你们有所帮助。