在调查您网站的缓慢性能时,您可能会发现您的网站具有较高的 TTFB 或首字节时间。TTFB 是指您的浏览器接收到您的站点加载的第一个数据字节所花费的时间。每次新用户访问该站点时,他们的浏览器必须先下载您的网页。
测试TTFB
测试TTFB有两种主要方法;浏览器和速度测试。速度测试工具无法扫描 wp-admin 中的页面,因此如果您想测试这些页面,则需要使用浏览器方法。
在 Chrome 中测试 TTFB
- 右键或ctrl 单击您要测试的网页
- 选择检查
- 单击网络选项卡
- 硬刷新页面:
- Mac – 按住⌘ Cmd然后按R
- PC – 按住Ctrl然后按R
- 单击列出所请求页面URL的行
- 点击计时
- 您将在其自己的行上看到 TTFB 和一个以毫秒 ( ms )为单位的值
注意:如果您在以管理员身份登录时测试 wp-admin 页面或测试任何页面,则该页面不会在服务器上缓存。与前端页面相比,它具有自然更高的 TTFB,可以从服务器缓存提供服务。
- 低于 200 毫秒的 TTFB 被认为是很好的。
- 200ms 到 500ms 范围内的 TTFB 被认为是正常和没问题的。
- 需要调查持续高于 600 毫秒的 TTFB。
使用在线工具测试 TTFB
还有许多在线页面速度测试可以显示 TTFB。TTFB 通常位于其自己线路上的速度测试的瀑布区域内。一些常见的速度测试网站是:
WebPageTest
Pingdom的
GTmetrix
KeyCDN
Sucuri加载时间测试仪
始终考虑页面速度测试的位置,因为由于网络延迟,更接近的测试将提供更快的结果。如果您无法更改测试的位置,那么寻找不同的工具可能是明智之举,它可以让您从更靠近主要用户群的位置进行测试。
高 TTFB 故障排除
复制到暂存或开发站点,或者在继续之前简单地进行备份。
- 在您网站的几个不同页面上测试 TTFB。
- 如果只是几个页面变慢,则很可能是跨页面共同使用的元素。尝试禁用可能影响所有慢速页面的任何元素。
- 测试静态 HTML 文件而不是动态 WordPress 页面。例如,上传一个名为SFTP的文件,该文件
test.html
仅包含一些简单的测试措辞。- 如果静态页面上的 TTFB 较高,则服务器上可能存在负载问题。联系支持部门寻求帮助。
- 如果静态页面上的 TTFB 较低,则您网站上的某些内容可能会导致问题。
- 激活不同的主题,最好是没有修改的默认主题。
- 如果 TTFB 较低,则您的主题可能是导致问题的原因。检查更新或联系主题开发人员。
- 如果 TTFB 仍然很高,请尝试禁用插件。
- 停用所有插件。
- 如果 TTFB 仍然很高,则可能是由于数据库问题。检查您的自动加载数据和数据库查询。
- 如果TTFB较低,请尝试一一启用插件以找到罪魁祸首。
WordPress 和动态内容
高 TTFB 最常见的罪魁祸首是动态内容生成。这是指 PHP 和数据库查询生成网页所需的时间。导致动态内容生成缓慢的主要因素是大文件、过多或缓慢的数据库查询以及自动加载数据。
优化文件
如果您的网页正在加载大文件或太多文件,则浏览器在用户端下载这些内容也可能需要很长时间。
提供缩放图像— WP Smush或EWWW Image Optimizer Cloud等插件可以提供帮助
缩小你的 CSS 和 Javascript 文件——看看一个插件,比如WP Rocket
推迟您网站的 Javascript — 移动您的 JS 代码以在您的页面上向下加载。您还可以使用WP Rocket 之类的插件
利用缓存
WP Engine 的缓存系统通过将每个生成的页面作为静态文件存储在缓存中来帮助抵消提供动态页面所需的许多资源。然后可以更快地将此缓存版本提供给所有后续访问者。页面缓存每十分钟自动清除一次。由于页面缓存有助于抵消生成请求页面所需的大部分时间和资源,因此最好尽您所能提高页面可缓存性,以便从缓存中提供更多请求。这有助于确保您的网站快速且可扩展。我们还建议使用我们的对象缓存层,它缓存发送到数据库的查询结果,最大 1MB。这意味着当您的页面必须在未缓存的情况下生成时,可以更快地从缓存中提供查询。
减少查询
另一个影响 TTFB 的重要因素是对数据库的查询。过多的查询、运行时间过长的查询或未完成的查询都会直接影响页面的高效加载能力。
安装像Query Monitor这样的诊断插件可以帮助您找到影响加载时间的插件、主题或设置。
一个更强大的工具,称为 New Relic,还可以允许在代码级别进行挖掘以查找任何导致问题的查询。
减少自动加载的数据
自动加载的数据是您的数据库中的信息,WordPress 告诉它在每个页面上加载。这对于诸如 URL、活动主题和插件之类的东西很有用,但是当太多数据被告知要自动加载时,这就会成为一个问题。过多的自动加载数据会很快导致在每次页面加载时增加数百万字节的多余数据。
我们建议自动加载的数据不超过800,000 字节(约 0.8MB)以获得最佳性能。
此限制在启用对象缓存时尤为重要,因为它只有 1MB 的缓冲区大小。高自动加载数据与对象缓存相结合可能会导致即时 502 错误。
自动加载的数据始终存储在 wp_options 表中。在该表中有一个名为“autoload”的列,每个对应行的值设置为yes或no。
将一行设置为yes将为该值启用自动加载。
将一行设置为 no将禁用该值的自动加载。
注意:在对数据库进行任何更改之前,一定要创建一个检查点。
运行清理查询
可以从phpMyAdmin或使用远程数据库连接运行以下查询。
计算总自动加载数据:
SELECT SUM(LENGTH(option_value)) FROM wp_options WHERE autoload = 'yes';
找到最大的自动加载行:
SELECT LENGTH(option_value),option_name FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 20;
更新插件和主题
看起来很简单,插件和主题作者经常在他们的更新中添加优化。这意味着更新您的插件可以通过使用新的、更高效的插件查询和 PHP 代码来优化您的网站。
不仅要及时掌握这些更新以确保您的网站保持安全,而且确保您的网站保持快速运行也很重要。
注意:一些高级主题和插件不会在您的 wp-admin 的插件页面上列出它们的更新。定期检查插件本身或与插件作者联系。
Apache 配置优化
动态生成页面时,Apache Web 服务器正在处理 PHP 代码以执行此操作。Apache 有一个标记为.htaccess的配置文件,用于定义特定站点的 Web 服务器配置。此文件必须与对您网站的每个未缓存请求一起加载,因此优化此文件将降低您网站的 TTFB。只要有可能,请尽可能保持 .htaccess 文件简短和干净。
删除重定向
将所有重定向添加到用户门户并从 .htaccess 文件和重定向插件中删除它们。
当重定向被放置在用户门户中时,它们在必须由 Apache 加载之前被处理,从而使它们预先占用的资源少得多。
限制其他指令
您可能希望在 .htaccess 文件中包含一些 PHP 指令。但是,其中许多(如缓存指令、gzip 指令等)已经在服务器上配置更高,不需要在此文件中设置。
使用标准 WordPress 规则
我们建议不要自定义默认的 .htaccess 规则。在WordPress默认规则应该始终存在。
网络延迟优化
网络延迟是指一位数据从一个位置传输到另一个位置所需的时间。当您请求一个网站时,该请求会离开您的浏览器,并且必须通过您的 Internet 服务提供商 (ISP) 进行多次跳转才能到达服务器。如果这些“跃点”中的任何一个遇到问题或出现故障,则可能会中断您与站点的连接。
您可以使用跟踪路由来帮助确定本地连接的其中一个跃点是否遇到延迟。
- 网络延迟在很大程度上不是无法控制的。
- CDN可以通过将您的资产分发到全球服务器并减少较大资产移动的距离来提供帮助。
- 在某些情况下,我们还可以考虑将您的站点迁移到更接近您的主要用户群的服务器。联系支持部门以获得将您的网站迁移到新区域的帮助。
缓存优化
您的网站获得的流量很大程度上超出了您的控制范围。但是,您可以控制流量与服务器资源的交互方式。这称为站点的可扩展性,以整体缓存能力为中心。
具有高可缓存性意味着从缓存中处理更多请求,并且您的站点一次可以处理的请求越多。随着更多流量的增加,高缓存性站点也具有高度可扩展性。
具有低缓存能力的站点意味着该站点正在返回大量未缓存的请求。过多的未缓存请求会增加 CPU 负载、减慢响应时间并最终增加 TTFB。随着更多流量的增加,低缓存性站点的可扩展性也很差,并且会遇到性能问题。
使用页面性能测试您的网站以确定您的缓存分数。