无论您是运行高流量 WordPress 安装还是低成本共享主机上的小型博客,您都应优化 WordPress 和服务器以尽可能高效地运行。本文提供了 WordPress 优化的广泛概述及具体推荐方法。然而,它并不是对每个方面的详细技术解释。

如果您现在需要快速修复,请直接前往“缓存”部分,您将在那里获得最小的麻烦带来的最大收益。如果您想立即开始更彻底的优化过程,请前往 如何在 WordPress 上提高性能。

关于性能主题的广泛概述包含在下面的 性能因素 和 性能测试工具 中。此处讨论的许多技术也适用于 WordPress Multisite (MU)。

性能因素

有几个因素会影响您的 WordPress 博客(或网站)的性能。这些因素包括,但不限于托管环境、WordPress 配置、软件版本、图像数量及其文件大小。

本文中的大部分降低性能的因素都已在此处解决。

托管服务

您可以使用的优化技术取决于您的托管设置。

共享托管

这是最常见的托管类型。您的网站将与许多其他网站一起托管在服务器上。托管公司为您管理 Web 服务器,因此您对服务器设置等的控制非常有限。在大多数共享托管中,用户可以通过 SFTP 访问网站根目录的文件系统,并通过 Web 托管控制面板 执行许多常见的域名/托管任务。

与此类托管最相关的领域是:缓存、WordPress 性能 和 内容卸载。

托管服务

托管服务类似于共享托管,但更局限于用户可为特定使用场景运行的一套软件堆栈。因此,托管提供商为用户管理软件堆栈,但条件是限制软件选择。用户通常没有(或不需要)通过 Web 托管控制面板 访问文件系统和管理任何任务。一些托管提供商将在托管计划的较高级别提供更多软件或插件的选择。

当今网络上的大多数内容平台(例如博客/社交媒体)都是托管服务的一种形式,因为它们旨在为特定的一组使用场景提供平台。

虚拟专用服务器和专用服务器

在此托管场景中,您拥有对自己服务器的控制权:整个文件系统、SSH 以及在一个专门用于该服务器的独立操作系统上安装/配置任何软件的能力。该服务器可能是专用的硬件设备,或者是共享同一物理硬件的众多虚拟服务器之一。

关键的是,您可以控制服务器设置。除了上述领域(缓存和 WordPress 性能)外,此处感兴趣的关键领域是:优化软件 和 内容卸载。

服务器数量

在处理非常高流量的情况时,可能需要使用多个服务器。如果您处于这一级别,您应该已经采用了上述所有适用的技术。

WordPress 数据库可以轻松移动到不同的服务器,只需对配置文件进行少量更改即可。同样,图像和其他静态文件可以移动到备用服务器(参见 内容卸载)。

负载均衡器 可以帮助将流量分散到多个 Web 服务器,但需要更高水平的专业知识。如果您使用多个数据库服务器,HyperDB 类提供标准 WPDB 类的替换,并且可以处理复制和分区结构中的多个数据库服务器。

硬件性能

您的硬件能力将对网站性能产生巨大影响。处理器数量、处理器速度、可用内存量、磁盘空间和磁盘存储介质都是重要因素。托管提供商通常以更高的价格提供更高的性能。

地理距离

您的服务器与网站访客之间的距离也会影响性能。内容分发网络 (CDN) 可以在各个地理区域镜像静态文件(如图像),以便所有网站访客都能获得最佳性能。

服务器负载

服务器上的流量量及其配置处理负载的方式也会产生巨大影响。例如,如果您不使用缓存解决方案,随着额外的页面请求涌入并堆积,性能将减慢直至停止,经常导致 Web 或数据库服务器崩溃。

如果配置得当,大多数托管解决方案可以处理非常高的流量量。将流量卸载到其他服务器也可以减少服务器负载。

滥用流量,如登录 暴力攻击、图像热链接(其他网站从高流量页面链接到您的图像文件)或 DoS 攻击也会增加服务器负载。识别和阻止这些攻击至关重要。

软件版本与性能

确保使用最新的软件也很重要,因为软件升级通常可以修复错误并增强性能。确保运行最新版本的 Linux(或 Windows)、Apache、MySQL/MariaDB 和 PHP 是必不可少的。

WordPress 配置

您的主题将对网站性能产生巨大影响。快速轻量级主题的执行效率远高于负载图形且效率低下的重型主题。

插件的数量及其性能也将对网站性能产生巨大影响。停用和删除不必要的插件是提高性能的显著方法。

跟上 WordPress 升级也很重要。

图形大小

确保帖子中的图像已针对网络进行优化可以节省时间、带宽并提高搜索引擎排名。

性能测试工具

  • 在线网页基准测试工具 可以从不同位置、浏览器和连接速度测试真实世界的网站性能。
  • 内置的浏览器开发人员工具(例如 Firefox 或 Chrome)都具有性能测量工具。

如何在 WordPress 上提高性能

优化您的 WordPress 网站

最小化插件

提高 WordPress 性能的第一种也是最简单的方法是查看插件。停用并删除任何不必要的插件。尝试选择性地禁用插件以测量服务器性能。

是否有一个插件严重影响您网站的性能?查看插件文档,在适当的插件支持论坛中寻求支持,或寻找具有类似功能集的替代插件。

优化内容

图像文件

  • 是否存在任何不必要的图像?(例如,您可以将一些图像替换为文本吗?)
  • 确保所有图像文件均已优化。为每个图像选择正确的格式 (JPG/PNG/GIF) 和压缩。
  • 考虑使用更现代的图像格式,如 WebP,其尺寸更小。

总文件数量/大小

  • 您可以减少显示网站平均页面所需的文件数量吗?
  • 当仍在使用 HTTP/1.x 时,建议将多个文件合并到单个优化文件中。
  • 压缩 CSS 和 JavaScript 文件。

升级硬件

在托管提供商处支付更多以获得更高级别的服务可以非常有效。增加 CPU 和内存 (RAM) 或切换到具有固态硬盘 (SSD) 或 NVMe 的主机可以产生很大差异。增加处理器数量和处理器速度也会有所帮助。尽可能尝试将具有不同功能的服务(如 HTTP 和 MySQL)分离到多个服务器或 VPS 上(这些服务器最好位于同一位置以减少延迟)。如果您在共享托管上,升级到具有更高资源限制的计划(例如磁盘 I/O、IOPS、NPROC 和托管计划的总进程数)可能会有所帮助,如果您已达到您的限制。

优化软件

确保运行最新操作系统版本(例如 Linux 或 Windows Server)、最新 Web 服务器版本(例如 Apache 或 IIS)、数据库(例如 MySQL 服务器)和 PHP。

如果您无法执行以下任务,您的托管提供商可能能够为您完成其中一些,或者您可以寻求外部帮助(如自由职业者)来协助您。一个好的托管提供商会升级或将您的账户迁移到符合推荐规格的服务器上,但并非所有提供商都能帮助您管理/优化服务器,因为这通常超出了托管计划提供范围的范围。如有需要,带有预选定软件栈和固定版本的托管 WordPress 解决方案可能是满足您需求的潜在选择。

DNS:不要在您的 WordPress 服务器上运行 DNS。请使用商业 DNS 服务或您的域名注册商提供的免费服务。使用外部服务还可以使在维护或紧急情况期间切换备用服务器变得更加容易。它还提供了一定程度的容错能力。如果您在外部服务器上托管 DNS,将减少对您主要 Web 服务器的负载。这是一个简单的更改,但它可以卸载一些流量和 CPU 负载。

Web 服务器:您的 Web 服务器可以配置以提高性能。有一系列技术,从 Web 服务器缓存到设置缓存头以减少每个访问者的负载。搜索您特定 Web 服务器的优化方法(例如,搜索“Apache 优化”以获取更多信息)。一些 Web 服务器有更高速度版本可供付费购买。还有多种方法可以根据您的特定托管和站点配置调整 Apache 以获得更高性能(例如 Memcached)。

PHP:有多种 PHP 加速器可用,可以显著提高您的 PHP 文件的性能。这将适用于所有 PHP 文件,而不仅仅是您的 WordPress 安装。搜索 PHP 优化以获取更多信息(例如 APC 或 OPcache)。一些 WordPress 缓存插件提供对 Memcached、APC 和其他 Opcode 缓存的集成支持。较新的 PHP 版本通常也会包含更好的性能优化。

MySQL/MariaDB:MySQL 或 MariaDB 优化本身就是一种黑魔法。对查询缓存设置进行一些简单更改即可对 WordPress 性能产生巨大影响,因为 WordPress 会在每个请求中重复许多查询。如今,InnoDB 是 MySQL 的默认存储引擎,您必须确保使用它。InnoDB 可以进行优化和微调,请在网络上搜索 mysql 优化、mysql innodb 性能 或 innodb 优化 以获取更多信息和示例。请在网络上搜索 mysql convert myisam to innodb 以了解如何将旧的 MyISAM 表转换为 InnoDB。

其他服务:不要在您的 WordPress 服务器上运行邮件服务器。对于联系表单,请使用联系表单插件配合外部邮件服务。

缓存

缓存插件

缓存插件可以轻松安装,并将您的 WordPress 帖子和页面缓存为静态文件。这些静态文件随后被提供给用户,从而减少服务器的处理负载。对于相当静态的页面,这可以将性能提高数百倍。您可以通过在插件目录中搜索 cache 来获取相关插件列表。

当与系统级页面缓存(如 Varnish)结合使用时,效果非常强大。如果您的帖子/页面包含大量动态内容,配置缓存可能会更复杂。

服务器端缓存

Web 服务器缓存更为复杂,但用于非常高流量的网站。除了本文范围之外,还有广泛的选择。最简单的解决方案从本地服务器缓存开始,而更复杂和复杂的系统可能使用多个缓存服务器(也称为反向代理服务器)“位于”运行 WordPress 应用程序的 Web 服务器之前。一些 Web 服务器也可以同时充当反向代理。在您的服务器上添加像 Alternative PHP Cache (APC) 这样的 opcode 缓存将提高 PHP 性能数倍。

Varnish Cache 与某些缓存插件协同工作,以在内存中存储预构建的页面并快速提供它们,而无需执行 Apache、PHP 和 WordPress 堆栈。

如前所述,使用外部评论插件代替原生 WordPress 评论可以协助 Varnish,因为不需要您的读者登录 WordPress,并且增加了 Varnish Cache 可以从缓存中提供的页面浏览量数量。

浏览器缓存

浏览器缓存可以通过减少每页的请求数量来帮助减少服务器负载。例如,通过为不更改的文件(如图像、CSS、JavaScript 等静态文件)设置正确的文件头,浏览器将在用户的计算机上缓存这些文件。该技术允许浏览器检查文件是否已更改,而不是简单地请求它们。结果是您的 Web 服务器可以回答更多 304 响应,确认文件未更改,而不是 200 响应,后者需要发送文件。

请查看 HTTP Cache-Control(特别是 max-age)和 Expires 头,以及 Entity Tags 以获取更多信息。

一些 WordPress 缓存插件集成了对浏览器缓存和 ETag 的支持。

对象缓存

使用持久对象缓存可以通过减少从 Web 服务器到数据库的往返次数来加快页面加载时间。例如,您的站点的选项数据需要在每个页面视图中可用。如果没有持久对象缓存,您的 Web 服务器必须从数据库中读取这些选项来处理每个页面视图。这些额外的数据库往返会减慢 Web 服务器的响应时间,如“首字节时间”(TTFB),并可能在流量激增期间迅速压倒数据库服务器。

为了让您的站点使用持久对象缓存,您的托管提供商必须为您提供特定类型的服务器,即 缓存服务器。请询问您的托管提供商或外部帮助(如自由职业者)来协助您安装和配置持久对象缓存服务器,然后安装支持已安装的缓存服务器的 对象缓存 WP 插件:

进一步阅读

内容卸载

使用内容分发网络 (CDN)

使用 CDN 可以大大减少对您网站的负载。将图像、JavaScript、CSS 和主题文件的搜索和交付卸载到 CDN 不仅更快,而且可以减轻 WordPress 服务器自身应用堆栈的巨大负载。如果与上述 WordPress 缓存插件一起使用,CDN 最有效。一些较新的 CDN 还将包括全页面缓存 (FPC) 或边缘缓存,这将缓存网站的整个 HTML 内容。

有关详细信息,请参阅 知名内容分发服务提供商列表。

静态内容

任何静态文件都可以卸载到另一台服务器。例如,任何静态图像、JavaScript 或 CSS 文件都可以移动到不同的服务器。这是高性能系统(Google、Flickr、YouTube 等)中的常见技术,但对于单台服务器 struggling 的小型网站也有帮助。此外,将此内容移动到不同的主机名可以为将来使用多台服务器奠定基础。

一些 Web 服务器经过优化以提供静态文件,并且可以比 Apache 等更复杂的 Web 服务器更高效地做到这一点,例如 lighttpd。

云存储 是基于按使用付费的专用静态文件托管服务。没有最低成本,对于达到共享或单台服务器可处理峰值流量的较低流量网站来说可能是实用的。

多个主机名

在多个主机名之间拆分静态文件也可以带来用户改进。大多数浏览器只会向主机发出 2 个同时请求,因此如果您的页面需要 16 个文件,它们将一次请求 2 个。如果您将 16 个文件分散在 4 个主机名之间,它们将一次请求 8 个。这可以减少用户的页面加载时间,但如果不同的主机名由同一台服务器提供,则可以通过创建更多同时请求来增加服务器负载。此外,众所周知,“管道”如果过度使用,经常会使访客的互联网连接饱和。

卸载图像是最简单和最容易开始的地方。所有图像文件可以均匀地分散在三个主机名之间(例如 assets1.example.com、assets2.example.com、assets3.example.com)。随着流量增长,这些主机名可以移至您自己的专用服务器。注意:避免随机选择主机名,因为这会影响浏览器缓存并导致更多流量,还可能导致过多的 DNS 查找,这确实会带来性能惩罚。

同样,任何静态 JavaScript 和 CSS 文件都可以卸载到单独的主机名或服务器。

在 HTTP/2 和 HTTP/3 中,“HTTP 管道”已被多路复用所取代,因此使用上述技术可能不再必要。

Feed

您的 Feed 可以轻松卸载到外部 Feed 服务,该服务可以处理所有 Feed 流量,并且只需每隔几分钟从您的站点更新一次 Feed。这可以大大节省流量。

同样,您也可以将自身的 Feed 卸载到单独的服务器(例如 feeds.example.com),然后自行处理 Feed 统计数据和广告。

压缩

有多种方法可以在服务器上压缩文件和数据,以便更快地向读者浏览器交付页面。上面描述的一些 缓存插件集成了对大多数常见压缩方法的支持。

一些 WP 缓存插件支持 Minify 和 Tidy 来压缩和合并您的样式表和 JavaScript 文件。它还支持输出压缩,例如 zlib,另见 输出压缩。

压缩媒体文件(即图像)也很重要。

数据库调优

清理您的数据库

一些 优化插件和 数据库插件可以帮助您减少数据库中的额外杂乱。

您还可以指示 WordPress 最小化保存的文章和页面的修订版本数量。

添加服务器

虽然需要额外的专业知识,但添加服务器是提高性能的强大方法。

您可以使用 负载均衡器将流量分散到多个 Web 服务器,并且可以使用 HyperDB或云中的数据库服务来运行更可扩展或多个数据库服务器。

网上有关于在云服务上扩展 WordPress 站点的各种指南,以及 WordCamp 演示文稿。

自动加载选项

自动加载选项是插件和主题的配置文件设置,它们会随着 WordPress 的每个页面加载而自动加载。每个插件和主题都定义了自己的选项以及哪些选项会被自动加载。拥有过多的自动加载选项会减慢您的站点速度。通常,您应该尝试将站点的自动加载选项保持在 800kb 以下。

默认情况下,自动加载选项保存在 wp_options 表中。可以在该表中逐个选项关闭自动加载功能。有关查看和更改自动加载选项的分步说明,请咨询您的托管提供商。

如果您使用持久对象缓存,选项(无论是否自动加载)都会加载得更快且更高效。

其他资源

进一步阅读

WordCamp 性能演示文稿