哪个 Magento 扩展正在拖慢你的速度?
停止猜测。
商店运行缓慢通常是因为安装了过多的扩展。大多数人通过逐个禁用扩展来寻找问题。这不叫调试,这是在生产环境上瞎猜。
Magento 2 允许你衡量扩展带来的开销。你需要关注以下四个领域:
- Plugins:每个插件都会为请求增加一层处理。在快速路径(fast paths)上运行大量插件会导致请求变慢。
- Observers:在常用事件上的观察者会在每个页面上运行。
- Layout:模块会将 blocks 注入到共享容器中。即使你不需要它们,它们也会运行。
- Queries:每个项目多进行一次查找,可能会在单个页面上产生数百个额外的查询。
不要猜测。使用内置的 profiler 来寻找真相。
运行此命令:
bin/magento dev:profiler:enable
加载一个缓慢的页面。寻找调用次数过多的方法。一个被调用了 1,400 次的方法就是一个问题。
为了获得更准确的数据,请使用 Blackfire、Xdebug 或 New Relic。Blackfire 可以准确地向你展示某个 vendor namespace 占用了多少时间。
你也可以通过搜索文件来查找模块的挂载点:
查找插件:
grep -rl "<plugin" vendor/*/module-*/etc/ app/code/*/*/etc/
查找观察者:
grep -rl "<observer" vendor/*/module-*/etc/ app/code/*/*/etc/
一旦发现可疑对象,请使用科学方法:
- 测量启用该模块时的页面速度。
- 禁用该特定模块。
- 再次测量页面速度。
两者的差值就是该模块的真实开销。
当你发现一个缓慢的模块时,你有三个选择:
- 改变作用域 (Change the scope):使用
di.xml将插件限制在特定区域。 - 替换逻辑 (Replace the logic):编写自己的轻量级模块来替换沉重的 around plugin。
- 移除它 (Remove it):如果开销大于价值,直接删除。
不要再把性能问题当成玄学了。用数据来修复你的商店。
来源:https://dev.to/iamrobindhiman/which-magento-extension-is-slowing-you-down-stop-guessing-1mj3