无论您是在低成本共享主机上运行高流量 WordPress 安装还是小型博客,您都应该优化 WordPress 和您的服务器以尽可能高效地运行。本文使用特定推荐方法提供了 WordPress 优化的广泛概述。但是,它不是每个方面的详细技术说明。
如果您现在需要快速修复,请直接进入缓存部分,您将以最小的麻烦获得最大的好处。如果您想立即开始更彻底的优化过程,请转到如何提高 WordPress 的性能。
性能主题的广泛概述包含在影响性能的因素和如何衡量性能中。此处讨论的许多技术也适用于 WordPress 多站点 (MU)。
性能因素 #
有几个因素会影响您的 WordPress 博客(或网站)的性能。这些因素包括但不限于托管环境、WordPress 配置、软件版本、图形数量及其大小。
本文讨论了这些性能下降因素中的大部分。
托管 #
您可以使用的优化技术取决于您的主机设置。
共享主机 #
这是最常见的托管类型。您的站点将与许多其他站点一起托管在服务器上。托管公司为您管理 Web 服务器,因此您几乎无法控制服务器设置等。
与此类托管最相关的领域是:缓存、WordPress 性能和内容卸载
虚拟主机和专用服务器 #
在此托管方案中,您可以控制自己的服务器。服务器可能是一块专用硬件,也可能是许多共享相同物理硬件的虚拟服务器之一。
关键是,您可以控制服务器设置。除了上述领域(缓存和WordPress 性能),这里关注的关键领域是:服务器优化和内容卸载
服务器数量 #
在处理非常高的流量情况时,可能需要使用多个服务器。如果您处于此级别,您应该已经使用了上面列出的所有适用技术。
WordPress 数据库可以轻松移动到不同的服务器,只需对配置文件进行少量更改。同样,图像和其他静态文件可以移动到备用服务器(请参阅内容卸载)。
Amazon 的 Elastic Load Balancer可以帮助将流量分散到多个 Web 服务器,但需要更高水平的专业知识。如果您使用多个数据库服务器,HyperDB类提供标准WPDB 类的直接替代品,并且可以处理复制和分区结构中的多个数据库服务器。
硬件性能 #
您的硬件能力将对您的站点性能产生巨大影响。处理器数量、处理器速度、可用内存量和磁盘空间以及磁盘存储介质都是重要因素。托管服务提供商通常以更高的价格提供更高的性能。
地理距离 #
服务器与网站访问者之间的距离也会对性能产生影响。内容交付网络或 CDN 可以跨不同地理区域镜像静态文件(如图像),以便您的所有站点访问者都具有最佳性能。
服务器负载 #
服务器上的流量以及如何配置它来处理负载也会产生巨大的影响。例如,如果您不使用缓存解决方案,性能会因为额外的页面请求进入并堆积起来而停止运行,这通常会导致您的 Web 或数据库服务器崩溃。
如果配置正确,大多数托管解决方案都可以处理非常高的流量。将流量卸载到其他服务器也可以减少服务器负载。
滥用流量,例如登录蛮力攻击、图像盗链(其他站点从高流量页面链接到您的图像文件)或DoS攻击也会增加服务器负载。识别和阻止这些攻击非常重要。
软件版本和性能 #
确保您使用的是最新软件也很重要,因为软件升级通常会修复错误并提高性能。确保您运行的是最新版本的 Linux(或 Windows)、Apache、MySQL/MariaDB 和 PHP,这一点非常重要。
WordPress 配置 #
您的主题将对您网站的性能产生巨大影响。一个快速,轻量级的主题将比一个沉重的图形负载低效的主题更有效。
插件的数量及其性能也会对您网站的性能产生巨大影响。停用和删除不必要的插件是提高性能的非常重要的方法。
跟上WordPress升级也很重要。
图形大小 #
确保您帖子中的图片针对网络进行了优化可以节省时间、带宽并提高您的搜索引擎排名。
性能测试工具 #
- Webpagetest是一种用于从不同位置、浏览器和连接速度测试真实网站性能的工具。
- Google PageSpeed Insights是衡量您的 WordPress 网站性能并获得有关如何进行改进的明确、具体的反馈的方法。
- 内置的浏览器开发工具(即 Firefox 或 Chrome)都有性能测量工具。
如何提高 WordPress 的性能 #
优化您的 WordPress 网站 #
最小化插件 #
提高 WordPress 性能的第一个也是最简单的方法是查看 插件。停用并删除任何不必要的插件。尝试有选择地禁用插件来衡量服务器性能。
您的插件之一是否会显着影响您网站的性能?查看插件文档或在相应的插件支持论坛中寻求支持。
优化内容 #
- 图像文件
- 有没有不必要的图片?(例如,你能用文字替换一些图像吗?)
- 确保所有图像文件都经过优化。为每个图像选择正确的格式 (JPG/PNG/GIF) 和压缩。
- 总文件数/大小
- 您能否减少在您的网站上显示平均页面所需的文件数量?
- 仍在使用 HTTP1 时,建议将多个文件合并到一个优化文件中。
- 缩小 CSS 和 JavaScript 文件。
您还可以卸载内容以优化您的主题。
升级硬件 #
在您的托管服务提供商处为更高的服务水平支付更多费用可能非常有效。增加内存 (RAM) 或切换到具有固态驱动器 (SSD) 的主机,例如 Digital Ocean,可以产生很大的不同。增加处理器数量和处理器速度也将有所帮助。在可能的情况下,尝试在多个服务器或 VPS-es 上分离具有不同功能的服务(例如 HTTP 和 MySQL)。
优化软件 #
确保您运行的是最新的操作系统版本,例如 Linux、Windows Server 和最新的 Web 服务器,例如 Apache 或 IIS,数据库,例如 MySQL 服务器和 PHP。
也许您无法执行任务,并按照下面的提示进行操作。只需要求您的托管服务提供商为您做这些。一个好的托管服务提供商会将您的帐户升级或移动到升级的服务器,以匹配建议。如果需要,您可以切换到托管 WordPress 托管解决方案。
DNS:不要在您的 WordPress 服务器上运行 DNS。使用 DNS 的商业服务,例如 Amazon 的 Route 53 或您的域名注册商的免费产品。使用亚马逊之类的服务还可以在维护或紧急情况下更容易地在备份服务器之间切换。它还提供了一定程度的容错能力。如果您将 DNS 托管在外部服务器上,这将减少主 Web 服务器的负载。这是一个简单的更改,但它会减轻一些流量和 cpu 负载。
Web 服务器:可以配置您的 Web 服务器以提高性能。从 Web 服务器缓存到设置缓存标头以减少每个访问者的负载,有一系列技术。搜索您的特定 Web 服务器优化(例如,搜索“apache optimization”以获取更多信息)。一些 Web 服务器具有更高速度的版本,您可以付费购买,例如Apache Litespeed。还有许多方法可以根据您的特定主机和站点配置调整 Apache 以获得更高的性能,例如 Memcache。
PHP:有各种 PHP 加速器可用,它们可以显着提高 PHP 文件的性能。这将适用于所有 PHP 文件,而不仅仅是您的 WordPress 安装。搜索 PHP 优化以获取更多信息,fe APC或OPcache。W3 Total Cache 插件,如下所述,提供对 Memcache、APC 和其他 Opcode 缓存的集成支持。
MySQL/MariaDB:MySQL 或 MariaDB 优化本身就是一门黑魔法。对查询缓存设置的一些简单更改可能会对 WordPress 性能产生巨大影响,因为 WordPress 会在每个请求上重复大量查询。如今,随着 InnoDB 成为 MySQL 的默认存储引擎,您必须确保使用它。InnoDB 可以进行优化和微调,搜索“mysql 优化”、“mysql innodb 性能”或“innodb 优化”或获取更多信息和示例。搜索“mysql convert myisam to innodb”以获取有关如何将旧的 MyISAM 表转换为 InnoDB 的信息。
Iliya Polihronov 在 WordCamp San Francisco 2012 上展示了 WordPress 如何优化的一个很好的例子。除其他外,Iliya 还为 WordPress.com 进行服务器优化。
不要在您的 WordPress 服务器上运行邮件服务器。对于您的联系表格,请使用带有免费 Mailgun 的联系表格 7 之类的东西。
缓存 #
缓存插件 #
可以轻松安装W3 Total Cache或WP Super Cache等插件,并将您的 WordPress 帖子和页面缓存为静态文件。然后将这些静态文件提供给用户,从而减少服务器上的处理负载。对于相当静态的页面,这可以将性能提高数百倍。
当与 Varnish 等系统级页面缓存结合使用时,它会非常强大。如果您的帖子/页面有很多动态内容,配置缓存可能会更复杂。
W3 总缓存 #
W3 Total Cache (W3TC) 是最新一代的 WordPress 性能插件,结合Web 开发权威的研究,为 WordPress 网站提供最佳的用户体验。这些详细的指南将引导您完成
W3TC 在优化服务器端和客户端性能的能力方面是独一无二的,它添加了本机不可用的功能:
- 页面缓存:W3TC 通过创建页面的静态 HTML 版本来帮助减少响应时间,允许 Web 服务器在不调用 PHP 的情况下为它们提供服务。当发表评论或编辑页面时,它会自动更新缓存。
- 缩小:从 HTML、CSS 和 JavaScript 文件中删除不必要的字符,然后在对缓存文件应用 HTTP 压缩之前分别组合它们。
- 数据库缓存:数据库查询(对象)也被缓存,允许许多站点减少生成新页面所需的时间。这对于收到大量评论的网站特别有用。
- 标头:W3TC 管理标头(实体标记、缓存控制、过期),这些标头控制 Web 浏览器中文件的缓存,减少服务器负载并提高用户的感知性能。
- 内容交付网络 (CDN):使用 CDN 可让您从托管帐户卸载资源。W3TC 将对图像、CSS、JavaScript 和其他静态文件的请求移动到高性能服务器网络。离访问者最近的服务器会自动用于下载文件,从而提供最快的下载速度。
W3TC 可用于通过共享或专用托管在单服务器和多服务器环境中优化 WordPress。
WP 超级缓存 #
WP Super Cache是 WordPress 的静态页面缓存插件。它生成由 Apache 直接提供的 HTML 文件,无需处理相对繁重的 PHP 脚本,帮助您在 WordPress 博客上显着提高速度。
使用 WP Super Cache 允许您的服务器以与常规图形文件相同的速度提供缓存的 HTML 页面。如果您的网站难以应付每日访问量,或者如果它出现在Digg.com、Slashdot.org或任何其他流行网站上,请考虑使用 WP Super Cache。
服务器端缓存 #
Web 服务器缓存‘ 更复杂,但用于非常高流量的站点。有很多选项可用,超出了本文的范围。最简单的解决方案从本地缓存服务器开始,而更复杂和涉及的系统可能会在实际运行 WordPress 应用程序的 Web 服务器“前面”使用多个缓存服务器(也称为反向代理服务器)。向服务器添加诸如Alternative PHP Cache (APC)之类的操作码缓存将使 PHP 的性能提高很多倍。
Varnish Cache与 W3 Total Cache 协同工作,将预先构建的页面存储在内存中并快速提供它们,而无需执行 Apache、PHP、WordPress 堆栈。
如前所述,使用 Disqus 等评论插件代替原生 WordPress 评论可以帮助 Varnish,因为它不需要您的读者登录 WordPress,并增加 Varnish 可以从缓存中提供的页面浏览量。
浏览器缓存 #
浏览器缓存可以通过减少每页的请求数来帮助减少服务器负载。例如,通过在不更改的文件(静态文件,如图像、CSS、JavaScript 等)上设置正确的文件头,浏览器会将这些文件缓存在用户的计算机上。这种技术允许浏览器检查文件是否已更改,而不是简单地请求它们。结果是您的 Web 服务器可以回答更多 304 响应,确认文件未更改,而不是需要发送文件的 200 响应。
查看 HTTP Cache-Control(特别是 max-age)和 Expires 标头以及实体标签以获取更多信息。
W3 Total Cache 集成了对浏览器缓存和 ETags 的支持。
延伸阅读 #
- W3 总缓存插件(Dougal Campbell 提供)
- 神圣的 Shmoly!:WP 超级缓存
- 加快网站速度的最佳实践– 过期/缓存控制标头和 ETag(由 Yahoo! Developer Network 提供)
- WebSiteOptimization.com:使用服务器缓存控制来提高性能
内容卸载 #
使用内容交付网络 (CDN) #
使用 CDN 可以大大减少您网站的负载。将图像、javascript、css 和主题文件的搜索和交付卸载到 CDN 不仅速度更快,而且减轻了 WordPress 服务器自己的应用程序堆栈的大量负载。如果与 WordPress 缓存插件(如 W3TC)结合使用,CDN 是最有效的,如上所述。
CloudFlare是一种流行的内容交付网络,它还提供 Internet 安全服务。计划从免费开始,但附加功能需要额外付费。CloudFlare 是一个固定成本的 CDN,这意味着它们按功能而不是使用量收费。CloudFlare 允许您在返回源主机之前通过其网络路由您的站点流量。
Amazon Cloudfront使用 Amazon S3 服务为您的静态文件提供内容交付网络 (CDN) 功能。CDN 是一项服务,可将您的静态文件缓存在世界各地的众多 Web 服务器上。为您的用户提供更快的下载性能,无论他们身在何处。建议您将 Cloudfront 与 S3 结合使用,而不仅仅是单独使用 S3;成本差别不大。
MaxCDN是类似于 Amazon Cloudfront 的按使用付费内容分发网络 (CDN)。不同之处在于对视频点播的支持以及文件的“镜像”(无需上传),尽管您可以根据需要上传它们。
另一个替代 CDN 提供商是KeyCDN。他们在其支持页面上提供了逐步的 WordPress 集成指南。
KeyCDN 和 MaxCDN 是可用的最实惠的 CDN 选项之一,它们能够击败亚马逊等竞争对手的定价,因为它们是更大的 CDN 提供商的一个部门。
静态内容 #
任何静态文件都可以卸载到另一台服务器。例如,任何静态图像、JavaScript 或 CSS 文件都可以移动到不同的服务器。这是非常高性能系统(Google、Flickr、YouTube 等)中的一种常用技术,但对于单个服务器正在苦苦挣扎的小型站点也很有帮助。此外,将此内容移动到不同的主机名可以为将来的多个服务器奠定基础。
一些 Web 服务器经过优化以提供静态文件,并且比 Apache 等更复杂的 Web 服务器(例如lighttpd )更有效。
Amazon Simple Storage Service (S3)是一种按使用量付费的专用静态文件托管服务。在没有最低成本的情况下,对于达到共享或单个服务器可以处理的峰值的低流量站点可能是实用的。
多个主机名 #
通过在多个主机名之间拆分静态文件也可以改进用户。大多数浏览器只会同时向服务器发出 2 个请求,因此如果您的页面需要 16 个文件,它们将一次被请求 2 个。如果您将其分布在 4 个主机名之间,他们将一次被请求 8 个。这可以减少用户的页面加载时间,但可以通过创建更多同时请求来增加服务器负载。此外,众所周知,如果过度使用,“流水线”通常会使访问者的 Internet 连接饱和。
卸载图像是最容易和最简单的开始。所有图像文件都可以在三个主机名之间平均分配(例如 assets1.yoursite.com、assets2.yoursite.com、assets3.yoursite.com)。随着流量的增长,这些主机名可以移动到您自己的服务器上。注意:避免随机选择主机名,因为这会影响浏览器缓存并导致更多流量,并且还可能创建过多的 DNS 查找,这会带来性能损失。
同样,任何静态 JavaScript 和 CSS 文件都可以卸载到单独的主机名或服务器。
饲料 #
您的提要可以很容易地卸载到外部服务。像Google FeedBurner这样的Feed 跟踪服务会自动执行此操作,Feedburner 服务器将处理所有的 Feed 流量,并且每隔几分钟就会从您的站点更新 Feed。这可以节省大量流量。
同样,您可以将自己的供稿卸载到单独的服务器(例如 feeds.yoursite.com),然后处理您自己的供稿统计/广告。
延伸阅读 #
- 使用 Amazon S3 / Cloudfront 卸载图像:Amazon S3 和 CloudFront 与 WordPress,
- 减少您网站的带宽使用
压缩 #
有多种方法可以压缩服务器上的文件和数据,以便更快地将页面传送到读者的浏览器。上述 W3 Total Cache 集成了对大多数常用压缩方法的支持。
W3 Total Cache 支持 Minify 和 Tidy 压缩和组合您的样式表和 javascript 文件。它还支持输出压缩,例如 zlib,另见输出压缩。
压缩媒体文件(即图像)也很重要。WP Smushit插件可以帮助解决这个问题。
数据库调优 #
清理数据库 #
WP Optimize插件可以帮助您减少数据库中的额外混乱。
您还可以指示 WordPress尽量减少它保存的帖子和页面的修订数量。
添加服务器 #
虽然它需要额外的专业知识,但添加服务器可能是提高性能的有效方法。我强烈推荐阅读在 AWS 中构建高度可扩展的 WordPress 站点指南,以使用 Amazon 的关系数据存储 (RDS) 构建更昂贵、高度可扩展的 AWS 实施。
您可以使用 Amazon 的 Elastic Load Balancer 将流量分散到多个 Web 服务器,您可以使用HyperDB或 Amazon 的 RDS 来运行更具可扩展性或多个数据库服务器。
自动加载的选项 #
自动加载选项是插件和主题的配置设置,它们会在 WordPress 中的每个页面加载时自动加载。每个插件和主题都定义了自己的选项以及自动加载的选项。有太多的自动加载选项会减慢您的网站速度。通常,您应该尝试将站点的自动加载选项保持在 800kb 以下。
默认情况下,自动加载的选项保存在 wp_options
表中。可以在此表中逐个选项关闭自动加载。有关查看和更改自动加载选项的分步说明,请咨询您的托管服务提供商。
其他资源 #
延伸阅读 #
- WordPress的高流量提示
- 优化 WordPress 托管的 10 个实用技巧
- 提高 WordPress 性能的 16 个快速提示 – 信息图表
- 加速 WordPress 的 11 种方法
- 追求终极网站性能
- WordPress 优化信息图
- 21 个简单的调整,让您的 WP 网站加载更快
- 如何通过图像优化加速 WordPress 网站
- 将 WordPress 加载速度从 4.23 秒提高到 1.33 秒(案例研究)
- 更好的 WordPress 优化的 10 个技巧
- 如何通过在 Apache 中压缩(deflate/gzip)您的 HTML、Javascript、CSS、XML 等来使您的网站快速*
- 雅虎!开发者网络:卓越的性能