改善 Magento TTFB 的 5 个基本技巧
已发表: 2019-01-08这是 Vasili Nikolaev 的客座文章。
第一个字节的时间 (TTFB) 是网站最重要的速度指标之一。 它表示用户输入您的 Magento 商店 URL 后将经过多长时间以及他们获得任何响应的时间,即使小到 1 个字节(因此名称为“第一个字节的时间”)。
第一个字节的时间对于人类(他们不喜欢等待)和搜索引擎机器人(谷歌讨厌缓慢的网站并将它们排名较低)都至关重要 - 单击此处了解有关一流的 Magento 2 SEO 解决方案的更多信息魔术师)。
但与此同时,谷歌的发言人之一约翰·穆勒 (John Mueller) 提供了令人信服的证据,表明谷歌不使用 TTFB 进行排名:
因此,我们的建议是不要过度关注 TTFB 来进行 SEO,而是专注于用户体验和商店性能。
为什么 TTFB 比完整页面加载(称为“最后一个字节的时间”)更重要? 好吧,因为您越早加载第一个字节,用户就会越快开始阅读您的内容。 他们无法立即看到页面上的每张图片并不重要。 当您的网络服务器忙于加载其余内容时,为用户提供一些事情更为重要。
目录
- 1. 了解您的瓶颈以消除它们
- 什么是好的 TTFB?
- 2.迁移到更合适的数据库引擎
- 3. 将服务器设置与您当前的流量需求相匹配
- 4. 设置更好的缓存解决方案
- 5.摆脱无用的扩展
- 额外提示:调整商店和客户日志记录设置
- 为性能而战
1. 了解您的瓶颈以消除它们
什么是好的 TTFB?
谷歌表示目标是低于 200 毫秒的 TTFB。 在 200 毫秒以下,搜索引擎会将您排名最高。 一旦您超过此值,Google 将对您的网站进行处罚。 600 毫秒或更多意味着您甚至无法通过 Google 自己的 TTFB 测试。
有很多因素会影响您的 TTFB。 没有特别的顺序:
- Web 服务器配置和资源,
- 域名服务器解析速度,
- 页面代码执行时间,
- 实施后端缓存解决方案,
- 网络猜想。
使用第三方服务或使用 Google TTFB 测试检查您的 TTFB 值。 您还可以在此处将您的结果与热门网站或您的竞争对手进行比较,以独特的视角了解您的商店如何为移动用户加载。
另一个很棒的诊断工具是Magento 2 Profiler 。 有了它,您可以轻松地将每个页面请求分解为更小的块,这些块可以快速可视化和分析。
在表中,要特别注意 2 个重要值,Time 和 Count。 时间是不言自明的。 这是用户请求和服务器响应之间的实际延迟。 Cnt 行对应于该项目在创建输出之前被调用的次数。
将数据库探查器与 Magento 2 默认探查器结合使用来分析数据库查询是值得的。
这是您需要采取的第一步:启用 Magento Profiler 并查看存在 TTFB 最大问题的页面。 虽然您可以使用默认探查器,但我们建议您设置探查器 SQL。 它是免费的,并且可以方便地概述每个会话的查询数量。
Profiler 会将所有请求分割成更小的部分,因此您可以立即看到哪些部分拖累了您。
2.迁移到更合适的数据库引擎
如果 Magento 2 存储数据库效率低、速度慢或使用的存储引擎不是处理 Magento 的最佳选择,它很容易成为最大的性能瓶颈。
为什么这很重要? MySQL 有多种存储引擎可供选择。 我们在官方 MySQL 文档中统计了至少 10 个受支持的解决方案,而且还有更多。
虽然您可以将 Magento 与默认的 MyISAM MySQL 引擎一起使用,但与默认设置相比,替代数据库引擎(例如 MariaDB Ari存储引擎或 Percona XtraDB 引擎)可以使您的存储更稳定(有时)更快。
例如, Aria引擎在 Magento 强制存储引擎使用大量临时表的情况下使用更智能的方法。
Percona是 MySQL 的另一个分支,它随着时间的推移集成了许多性能调整以加快数据库查询。 与MyISAM相比,它处理大量并行查询的速度要快得多,并且擅长事务处理。
尽管数据库优化的最佳建议是仔细检查您的需求并选择最适合您的引擎,但我们有一些技巧对每个人都有用:
- 避免使用默认 MySQL 进行商店搜索。 安装 Elasticsearch 以加快您网站上的所有搜索查询,
- 选择最适合您的数据库引擎。
3. 将服务器设置与您当前的流量需求相匹配
在基础设施上廉价并不是一个好主意。 随着时间的推移,稳定增长的企业将会看到更多的客户、更多的交易和更多的订单。 因此,将您的设置保持在 80% 的容量以适应随机使用高峰和事件产生的客流量是健康的。 这 20% 可以在所有情况下保持良好的性能水平。
一个称职的托管团队会告诉您,您需要哪些系统要求才能顺利运行。 但是,如果您在一段时间内迅速成长,那么您有责任制定升级路线图。
Magento 商店中有许多关键点会严重影响您的系统要求:
- 商店规模(商店浏览次数),
- 目录中的类别和 SKU(带有属性和属性集),
- 平均流量数(平均页面浏览量和历史峰值),
- 每日交易(数字下载、支付和类似操作)。
一般来说,您的平均流量将直接影响您需要多少 CPU 能力。 因此,在您找到最佳 CPU 设置后,将您的 RAM 与您的 CPU 要求相匹配,以创建一个平衡的 Web 服务器配置文件。
数据库存储大小取决于您当前的 RAM,因此您应该选择足以满足所有当前需求的内存。 也为一些呼吸空间创造一个性能缓冲。 您的目标是始终保留至少 20-25% 的备用 CPU 和 RAM 以应对偶尔的流量高峰。
4. 设置更好的缓存解决方案
网站缓存是继炸薯条发明之后的下一个最佳选择。 服务器缓存提高了网站的敏捷性,使其感觉更快。 缓存通过将常用数据从 SSD 或硬盘驱动器移动到 RAM 来工作。
HDD 可以顺序读取高达 200 MB/秒的数据,SSD 高达 3200,DRAM 模块可以高达 20 GB/秒。 这给了我们 x10 或至少一个数量级的差异。
Redis和Varnish都是 Magento 商店最受欢迎的升级之一。 这是 Magento 2 的推荐缓存选项。这两种解决方案都适用于 Magento 1。
Varnish 是一个具有挑战性的配置工具,但如果做得好,它可以在 100-200 毫秒内提供 TTFB 值。 对于整页缓存配置,TTFB 的范围在 250 毫秒内。
Varnish 的另一个明显优势——它适用于更多的网页。 虽然 FPC 不适用于包含大量动态内容的页面,但 Varnish 即使对于这些具有挑战性的用例也能提供更好的性能。
5.摆脱无用的扩展
老实说,禁用未使用的扩展是任何 Magento 2 商店的第一秘诀,但它经常被忽视。 在您的网站上运行的每个扩展程序都会占用您的一些资源。 如果它们配置不当,它们也可能会减慢您的 TTFB。
请记住:服务器需要在向用户发送任何反馈之前执行此代码。
清理你的扩展列表也会加快 Magento 的速度。 即使您无法禁用其中任何一个,也要让您的 Magento 商店和第三方扩展保持最新状态,以便从错误修复和优化中受益,这肯定会使您的网站性能更好。
额外提示:调整商店和客户日志记录设置
确保关闭 Magento 客户日志记录。 这将帮助您减少花费在数据库查询上的时间。 这不是一个巨大的影响,因为客户记录是一个相对较小的活动。 性能提升将取决于当前访问您商店的客户数量。
我们不建议您关闭商店日志记录。 这是一个有价值的工具,有助于 Magento 故障排除。 但是,您可以将它们移动到第三方服务,例如 Papertrail,而不是让存储日志占用服务器时间。
为性能而战
没有两个 Magento 商店是相同的。 他们每个人在优化店面以提高速度方面都将面临不同的挑战。 对于具有许多复杂的第三方扩展、大型数据库和多个商店的旧(和更大)Magento 网站来说尤其如此。
虽然我们永远无法“赢得”这场性能之战,但我们的共同目标是让 Magento 商店在所有电子商务网站中的速度、用户体验和安全性方面达到一流水平。
Vasili Nikolaev 一直在寻找最有效的秘诀,让店主的生活更轻松一些。 对他来说,没有什么比为一个具有挑战性的问题找到一个很好的解决方案更令人满意的了。