首页 > 后端开发 > php教程 > WordPress性能优化的完整指南

WordPress性能优化的完整指南

Lisa Kudrow
发布: 2025-02-08 13:31:37
原创
868 人浏览过

提升WordPress网站性能的实用指南

The Complete Guide to WordPress Performance Optimization

关键要点:

  • 选择优质主机: 高性能主机对网站速度至关重要。托管式WordPress主机和VPS方案能提供更好的控制和效率。
  • 精简主题和插件: 避免臃肿的主题和插件,不必要的特性会降低网站速度,影响用户体验。
  • 实施缓存策略: 页面缓存和对象缓存能减少服务器负载,加快内容交付速度。
  • 定期优化数据库: 删除冗余数据,优化数据库操作,确保快速查询响应。
  • 使用CDN: CDN能更快地为全球用户提供静态文件,提升网站全球性能。
  • 压缩和优化图片及静态文件: 减少加载时间,考虑使用延迟加载技术。

WordPress占据全球前一百万网站的近50%的CMS市场份额(数据来自Builtwith.com),在电商领域,WooCommerce的占比也达到33%。尽管WordPress有时会被诟病臃肿、资源消耗大,数据模型也有不足之处,但其普及程度毋庸置疑。

The Complete Guide to WordPress Performance Optimization

WordPress的易用性和低门槛使其得以广泛应用。它易于设置,几乎不需要技术知识。每月只需几美元就能找到WordPress主机,基本设置只需半小时点击即可完成。免费的WordPress主题和包含所见即所得页面构建器的主题比比皆是。

很多人看不起WordPress,但不可否认的是,WordPress推动了互联网和PHP的发展,许多互联网专业人士也受益于WordPress的易学性而开启了职业生涯。

然而,这种易用性也带来了代价。许多打着WordPress旗号的网站并非由专业人士打造,而是由价格低廉的开发者完成的,性能和外观往往被忽视。专业的外观和性能不应该事后补救,而应该在网站规划阶段就予以考虑。

The Complete Guide to WordPress Performance Optimization 知名英国二手车经销商Ling's Cars尝试了一种独特的营销方式,除非你非常清楚自己在做什么,否则请不要模仿。

一切从主机选择开始

新手通常会选择低成本的产品,并配备许多初学者友好的功能。考虑到一些大型行业参与者的不正当商业行为,以及客户对网站迁移专业人员的需求,网站设置的这一部分需要认真对待。

我们可以将WordPress主机供应商分为几个等级:

  • 高端: Kinsta等专门提供WordPress托管服务的供应商,其计划起价为每月100美元,甚至更高端的托管服务如Automattic的WordPress VIP,虽然值得信赖,但对许多网站所有者来说可能价格过高。
  • 中端: Flywheel、A2 Hosting、SiteGround和Pantheon等被认为是可靠且注重性能的供应商,它们提供可接受的速度和托管服务,适合那些更注重价格的客户。用户在这里可能会得到较少的帮助,但这些服务通常在可靠的设置、价格和高级用户选项之间取得了不错的平衡。此外还有Cloudways,它介于VPS和托管主机之间。欧洲用户可以考虑Pilvia,因为它提供高性能的服务器堆栈且价格相当实惠。
  • 低端: 对于那些不害怕命令行的人,可以选择Digital Ocean、Vultr、Linode、亚马逊的Lightsail、欧洲的Hetzner和OVH等VPS和专用服务器供应商。Hetzner是一家德国供应商,以其提供的优质物理服务器而闻名,价格略高于虚拟服务器,而OVH则提供非常具有成本效益的虚拟服务器。对于注重价格的用户,OVH在欧洲和加拿大的子公司Kimsufi也提供廉价的物理专用服务器,Host US则提供非常实惠的虚拟服务器。

对于托管式主机,需要注意的是服务器堆栈、CDN集成和SSD存储。像A2这样的保证资源是一个很大的优势。接下来要寻找的是SSH访问权限。精通技术的用户可能会受益于WP-CLI的可用性。

选择VPS时,需要注意的是XEN或KVM虚拟化优于OpenVZ,因为它可以减轻资源的过度销售,有助于保证你购买的资源确实是你的。它还提供了更好的安全性。

Easy Engine是一款软件,可以将你的整个VPS/WordPress安装变成一个一小时的工作。

关于服务器堆栈,如果追求性能,Nginx优于Apache,PHP 7是必须的。如果我们真的需要Apache,使用Nginx作为反向代理是一个优势,但这设置可能会比较复杂。

测试表明PHP 7比之前的版本有很大的优势。根据fasthosts.co.uk:

与PHP 5.6相比,WordPress 4.1在PHP 7上每秒执行的请求增加了95%。

选择主机时,请注意一些臭名昭著的提供商的负面体验。

软件注意事项

通常会减慢WordPress网站速度的是庞大的前端,其中包含大量的静态资源和数据库查询。这些问题源于主题的选择(及其页面构建器、大型滑块等),这不仅会由于许多请求和整体大小而减慢初始加载速度,而且还会由于大量的JavaScript和需要渲染的内容而减慢浏览器速度,使其无响应。

这里的黄金法则是:除非有充分的理由,否则不要使用它。

这可能听起来像来自荷马·辛普森口中的一条规则,但如果你可以跳过任何花里胡哨的功能,那就跳过吧。要保守。如果你必须添加一些闪亮的功能或JS视觉效果,总是优先选择那些尽可能专门为你的确切需求量身定制和编码的。如果你是熟练的编码人员,并且项目证明了这项工作的合理性,请记住简洁性自己编写代码。

检查所有你的网站不可或缺的插件——并删除其他插件。

最重要的是:在你开始修剪之前备份你的网站!

数据模型

如果你使用的是一个你使用了许多自定义帖子或字段的主题,请注意,很多这些都会减慢你的数据库查询速度。保持你的数据模型尽可能简单,如果不是,请考虑WordPress最初的用途是一个博客引擎。如果你需要更多功能,你可能需要考虑一些现有的MVC Web框架,这些框架将使你能够更好地控制你的数据模型和数据库的选择。

在WordPress中,我们可以通过使用自定义帖子类型、自定义分类法和自定义字段来构建丰富的自定义数据模型,但要注意性能和复杂性的成本。

如果你了解代码,请检查你的主题以查找不必要的数据库查询。每次单独的数据库访问都会在你的TTFB中花费宝贵的毫秒,以及你的服务器内存的兆字节。记住,二级循环可能代价高昂——因此在使用显示额外帖子的部件和小部件(例如滑块或部件区域)时要小心。如果你必须使用它们,请考虑在一个查询中获取所有帖子,否则可能会减慢你的网站速度。对于那些不想从头开始编码的人,有一个GitHub存储库。

元查询可能代价高昂

使用自定义字段根据某些条件获取帖子可能是一个开发复杂WordPress功能的强大工具。这是一个元查询的示例,在这里你可以找到关于其成本的一些详细说明。总结:帖子元数据并非为过滤而构建,分类法是。

get_post_meta是一个通常用于获取自定义字段的函数,它可以只使用帖子ID作为参数来调用,在这种情况下,它会在一个数组中获取所有帖子的元数据字段,或者它可以将自定义字段的名称作为第二个参数,在这种情况下,它只返回指定的字段。

如果在一个页面或请求上多次对某个帖子使用get_post_meta()(对于多个自定义字段),请注意这不会产生额外成本,因为第一次调用此函数时,所有帖子元数据都会被缓存。

数据库维护

在网站的生命周期中安装和删除各种插件以及更改不同的主题,通常会使你的数据库充满了许多不需要的数据。完全有可能发现——在检查为什么WordPress网站运行缓慢或由于服务器内存耗尽而无法加载时——数据库已经增长到数百兆字节甚至超过千兆字节,没有任何内容可以解释它。

wp-options是许多孤立数据通常遗留的地方。这包括但不限于各种瞬态数据(这篇文章警告了关于插件中删除瞬态数据的最佳实践)。瞬态数据是一种缓存形式,但与任何其他缓存一样,如果使用不当,它可能会弊大于利。如果你的服务器环境提供它,wp-cli有一个专门用于瞬态数据管理的命令集,包括删除。如果没有,WordPress插件库中有一些插件可以删除过期的瞬态数据,但它们提供的控制较少。

如果删除瞬态数据仍然使我们的数据库膨胀而没有任何实际原因,WP-Sweep是一个优秀的免费工具,可以完成清理数据库的工作。另一个需要考虑的是WP Optimize。

在进行任何类型的数据库清理之前,强烈建议你备份你的数据库!

一个非常方便的插件,用于分析整个WordPress请求生命周期,是Debug Objects。它提供了对所有瞬态数据、短代码、类、样式和脚本、加载的模板、数据库查询和钩子的检查。

The Complete Guide to WordPress Performance Optimization

确保了一个合理的、面向性能的设置——提前考虑我们的服务器堆栈,消除主题选择和插件和小部件过载可能造成的膨胀——我们应该尝试识别瓶颈。

如果我们在Pingdom Speed Test之类的工具中测试我们的网站,我们将获得请求中加载的所有资源的瀑布图:

The Complete Guide to WordPress Performance Optimization

这为我们提供了关于请求-响应生命周期的详细信息,我们可以分析这些详细信息以查找瓶颈。例如:

  • 如果上面的粉色DNS时间过长,可能意味着我们应该考虑更长时间地缓存我们的DNS记录。这是通过增加我们域名管理/注册商仪表板中的TTL设置来完成的。
  • 如果SSL部分花费的时间过长,我们可能需要考虑启用HTTP/2以受益于ALPN,调整我们的cache-control标头,最后切换到CDN服务。“简而言之的Web性能:HTTP/2、CDN和浏览器缓存”是一篇关于此主题的详尽文章,KeyCDN的“分析HTTPS性能开销”也是如此。
  • 连接、发送和接收部分通常取决于网络延迟,因此可以通过靠近目标受众的主机、确保主机具有快速上行链路以及使用CDN来改进这些部分。对于这些项目,你可能也需要考虑一个ping工具(不要与上面提到的Pingdom工具混淆),以确保你的服务器能够响应。
  • 等待部分——瀑布图中的黄色部分——是你的服务器基础设施生成或返回请求的网站所花费的时间。如果这部分花费的时间过长,你可能需要回到我们之前关于优化服务器、WordPress安装和数据库堆栈的主题。或者你可以考虑各种层次的缓存。

为了获得更广泛的测试和指导,以改进网站,有一个名为webcoach的小型命令行实用程序。在一个安装了NodeJS和npm的环境中(如Homestead Improved),安装它很简单:

<code>npm install webcoach -g</code>
登录后复制
登录后复制
登录后复制

安装后,我们可以获得关于如何改进网站各个方面的详细见解和建议,包括性能:

The Complete Guide to WordPress Performance Optimization

缓存

缓存在管理WordPress网站时可以发挥重要作用。有几个层次和可能的缓存方式。

页面缓存

页面缓存是Web应用程序的整个HTML输出的缓存。

如果可以,我们应该首先尝试测试服务器级别的解决方案,例如NGINX缓存或Varnish,或者Kinsta、SiteGround等托管主机供应商提供的缓存系统。

The Complete Guide to WordPress Performance Optimization

如果这并没有像我们希望的那样有帮助,我们可能需要考虑使用WP Super Cache、WP Fastest Cache或GitHub上经过改进的W3 Total Cache等插件。所有这些都可以提高性能,但通常需要一些实验。配置不当的缓存解决方案实际上会损害网站的性能。例如,W3TC——至少在改进之前——被认为可能是最好的免费缓存解决方案,可以创造奇迹……当它工作时。当它不工作时,它可能会使你的网站脱机。

WP Rocket被认为可能是最受好评的高级缓存解决方案。

页面缓存可以大幅提高性能,从RAM中提供整个网站,但请注意,如果你有一个带有购物车或依赖于cookie或个性化前端的动态网站,它可能会带来并发症。它可以为一个用户提供另一个用户的UI部分,因此通常需要在投入生产之前进行测试。这尤其适用于非托管服务器上的解决方案,例如Varnish或Cloudflare页面缓存。

片段缓存

当动态的、依赖于cookie的网站难以使用全页面方法进行缓存,或者当我们缓存Ajax请求时,片段缓存是一个需要考虑的解决方案。这里有一个很好的介绍。

对象缓存

对象缓存意味着编译和存储内存中所有数据库查询和PHP对象。一些缓存插件试图为我们管理对象缓存后端。使用后端通常是APCu、Memcached和Redis。它们需要安装在服务器上。

为了更深入地测试我们的PHP代码和对象缓存的性能,一个有价值的工具(需要shell访问权限和安装wp-cli)是profile命令。我们可以使用以下命令安装它:

<code>npm install webcoach -g</code>
登录后复制
登录后复制
登录后复制

<code>wp package install git@github.com:wp-cli/profile-command.git</code>
登录后复制
登录后复制

(根据安装情况,你可能需要添加--allow-root标志。)

然后我们可以分析整个加载周期,或者深入到特定的钩子、文件和类、它们的加载时间和缓存比率。

The Complete Guide to WordPress Performance Optimization

浏览器缓存

浏览器缓存意味着强制访问者的浏览器将其静态文件保存在其缓存中,因此他们不需要在重复访问时从我们的服务器获取这些文件。这里使用cache-controlexpires标头。缓存插件通常管理浏览器缓存和设置标头。Technumero制作了一个更深入的指南。

静态文件

静态文件是图像、样式表、JS代码、字体、媒体文件等。我们应该确保我们压缩它们,并且如果可能的话,我们正在利用HTTP/2来提供这些文件。如果我们的托管式主机不支持HTTP/2,或者将我们的非托管VPS迁移到HTTP/2超出我们的能力范围,最简单的方法是将CDN集成到我们的堆栈中。CDN从最接近我们受众的数据中心提供我们的静态文件。这减少了延迟,通常意味着利用它们高度调整的基础设施。

Autooptimize是一个可以帮助操作我们的静态资产并减少请求数量的插件,它可以连接JS和样式表文件,缩小它们,从而缩小页面输出。

关于媒体文件,我们应该考虑压缩/编码我们的视频以减小它们的大小,并通过YouTube等提供商提供它们,以减少对我们服务器的压力。像Amazon S3这样的云存储提供商是另一个不错的选择。视频托管不在本文的讨论范围之内,但WPMUDEV制作了一个关于此主题的实用指南。

关于图像,这些图像通常对于Web来说太大。有时,唯一能够让我们的服务器正常运行的解决方案(这可能需要很长时间)是通过shell进行批量压缩。Linux上的Imagemagick有一个有用的convert工具,允许我们批量压缩我们的图像。此示例递归地对文件夹中的所有JPG进行此操作,将JPEG质量降低到80%,以及其他一些小的增强功能,并调整图像大小(它应该是自解释的):

<code>npm install webcoach -g</code>
登录后复制
登录后复制
登录后复制

WP Bullet有两个优秀的指南,用于批量压缩JPG和PNG文件。

除此之外,还有Imagify服务和相应的WordPress插件来减小图像大小,EWWW图像优化器等等……

其他随机提示

  • 内存: 确保你的安装有足够的内存。
  • XML-RPC和登录页面: XML-RPC和登录页面经常遭受自动的、脚本化的暴力攻击——即使它不是一个大目标。即使没有闯入,它们也会浪费CPU周期。我们应该尝试在服务器级别阻止它们,在我们WordPress安装加载之前。如果我们不需要访问xmlrpc.php,我们可以在nginx上的虚拟主机块中放入这段代码:
<code>wp package install git@github.com:wp-cli/profile-command.git</code>
登录后复制
登录后复制

在Apache中:

<code>wp package install wp-cli/profile-command</code>
登录后复制

像iThemes Security、WPS Hide login等插件可以帮助解决这个问题,并更改我们的登录页面URL。

如果你受到暴力攻击,并且没有受到像Cloudflare这样的CDN或托管主机的保护,请考虑使用像fail2ban这样的防火墙(无论是否受到攻击,你都应该安装防火墙)。

  • WordPress心跳: 当WordPress仪表板打开时轮询服务器可能会减慢你的服务器速度,并使你的仪表板无响应。特别是如果它在多个浏览器选项卡中或由多个用户打开。HeartBeat插件可以帮助解决这个问题。
  • MAX_INPUT_VARS: 当保存带有大量元字段的帖子或带有WooCommerce的可变产品时,我们可能会达到允许的最大请求变量数的限制(由复杂的WooCommerce产品发送的变量可能达到数千个)。这可能会使你的服务器崩溃。以下是如何修复它。
  • 如果你使用的是一个大型数据库的WordPress安装——尤其是一个WooCommerce安装——并且开始出现你无法解决的速度问题,请考虑使用ElasticPress。有些人对此很满意。
  • 如果你使用WordFence,请确保关闭Live View功能。它甚至可以使具有几GB内存的VPS停止运行。
  • 如果你正在记录对你的网站的访问——尤其是在你的wp-content目录中的debug.log中——请注意其大小。它可以增长到千兆字节级别并使你的服务器崩溃。
  • 如果你在服务器/主机上发生系统崩溃,核心转储将填满你的存储空间。请有人分析这些崩溃的原因,然后删除这些文件。你将通过看起来像core.XXXXXX的模式识别它们。

综上所述,需要再次警告:在你对网站进行任何更改之前,请备份它!

结论

我希望这篇WordPress优化技巧的汇编能派上用场。随着网站规模的增长,这些技巧越来越难以追溯地应用。这就是为什么最好尽早开始,并努力获得最大效果:在启动之前应用尽可能多的这些技术,你不仅将拥有一个顺利的启动,而且从第一天起就拥有一个高性能的应用程序——这对于所有新用户来说肯定是一种极好的体验。

确保你也查看SitePoint的PWA指南。从第一天起就尽可能使你的WP网站成为PWA,这将帮助用户将其安装在其设备的主屏幕上,为重复访问做好准备。

WordPress性能优化的常见问题解答

哪些插件最适合优化WordPress性能?

有几个插件可以显著提高WordPress网站的性能。其中一些最好的包括WP Rocket、W3 Total Cache和WP Super Cache。这些插件提供页面缓存、对象缓存和GZIP压缩等功能,可以帮助加快网站速度。此外,像Imagify这样的插件可以优化你的图像,减小它们的大小而不会影响质量,这也可以提高加载时间。

CDN如何提高WordPress性能?

内容交付网络(CDN)可以通过在世界各地存储网站内容的副本来显着提高WordPress网站的性能。当用户访问你的网站时,CDN会从最接近他们的服务器交付内容,从而减少内容加载所需的时间。这可以显着提高网站的速度,尤其对于远离你的主服务器的用户。

如何优化我的WordPress数据库?

优化WordPress数据库可以显着提高网站的性能。这可以通过定期清理数据库、删除不必要的数据和优化数据库表来实现。像WP-Optimize这样的插件可以自动化此过程,使维护干净高效的数据库更容易。

图像优化如何提高WordPress性能?

图像优化可以通过减小图像的大小而不会影响其质量来显着提高WordPress网站的性能。这可以通过压缩图像、使用正确的图像格式和将图像调整到合适的尺寸来实现。像Imagify这样的插件可以自动化此过程,使优化图像更容易。

如何减少WordPress中的服务器响应时间?

减少服务器响应时间可以显着提高WordPress网站的性能。这可以通过优化服务器配置、使用高质量的主机提供商和实施缓存解决方案来实现。此外,减少网站向服务器发出的请求数量也可以提高服务器响应时间。

缩小CSS和JavaScript如何提高WordPress性能?

缩小CSS和JavaScript文件可以通过减小这些文件的大小来显着提高WordPress网站的性能。此过程包括从代码中删除不必要的字符,如空格和注释,而不会改变其功能。像Autoptimize这样的插件可以自动化此过程,使缩小文件更容易。

如何优化我的WordPress网站以适应移动设备?

优化WordPress网站以适应移动设备可以显着提高网站在这些设备上的性能。这可以通过实施响应式设计、优化图像以适应移动设备和使用移动友好的主题来实现。此外,像WPtouch这样的插件可以帮助你创建移动友好的网站版本。

延迟加载如何提高WordPress性能?

延迟加载可以通过仅在用户屏幕上可见时加载图像和其他内容来显着提高WordPress网站的性能。这可以减少页面的初始加载时间,提高网站的速度。像Lazy Load by WP Rocket这样的插件可以自动化此过程,使在你的网站上实施延迟加载更容易。

如何使用GZIP压缩来提高WordPress性能?

GZIP压缩可以通过减小文件的大小来显着提高WordPress网站的性能。此过程包括在文件发送到用户浏览器之前压缩文件,从而减少需要传输的数据量。这可以显着提高网站的加载时间。像Check and Enable GZIP compression这样的插件可以自动化此过程,使在你的网站上实施GZIP压缩更容易。

如何监控我的WordPress网站的性能?

监控WordPress网站的性能可以帮助你识别可能减慢网站速度的任何问题。这可以使用Google PageSpeed Insights、GTmetrix和Pingdom等工具来完成。这些工具可以为你提供有关网站性能的详细信息,包括加载时间、页面大小和请求数量。

以上是WordPress性能优化的完整指南的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板