monogo / optimize-object-manager
Magento 2 模块,用于优化编译后的对象管理器
Requires
- cweagans/composer-patches: ^1.6
- magento/framework: >=102.0.4
This package is auto-updated.
Last update: 2024-09-12 06:36:39 UTC
README
Magento 2 模块,用于优化编译后的对象管理器。
此模块仅适用于 Magento 2.3.4 及更高版本
重要
这是实验性功能,您使用它需自行承担风险!
安装
Composer
在理想情况下,命令 composer require monogo/optimize-object-manager
应该可以完成工作。
但在少数情况下,Composer 识别不到补丁文件。
如果您没有看到以下行
- Applying patches for magento/framework"
运行
composer require cweagans/composer-patches
在您的 composer.json 中添加以下内容
"extra": {
"composer-exit-on-patch-failure": true,
"patches": {
"magento/framework": {
"Optimize Magento ObjectManager ConfigLoader: ": "https://raw.githubusercontent.com/MonogoPolska/monogo-m2-optimize-object-manager/master/patches/composer/optimize-config-loader.diff"
}
}
}
运行
composer install
您应该看到以下行
- Applying patches for magento/framework"
如果没有,请转到 vendor/magneto 并删除 framework 目录,然后重新运行
composer install
Magento 设置
- 运行 Magento 命令
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
- 请确保您的 Magento 2 实例正在以生产模式运行,并且在安装后 generated/metadata 目录不为空
配置选项
编辑 app/etc/env.php
添加以下行
'monogo_autoload_optimization' => [
'enabled' => 1,
'allowed_area' => [
'frontend',
],
],
- enabled - 0 或 1
- allowed_area - Magento 2 区域(前端,adminhtml,crontab,webapi_rest,webapi_soap 等)。
检查
安装和配置后,您应该在 generated/metadata 中看到新文件,例如
- __frontend_global_diff.php
- __adminhtml_global_diff.php
工作原理
当您在生产模式下使用 M2 且 generated/metadata 目录不为空时,Magento 使用编译模式在对象管理器中。
生成的文件包含所有类并且体积很大。
在我的案例中,每个区域文件超过 8 MB。
Magento 加载 global.php 文件,然后加载您的区域文件(例如 frontend.php)。
此模块计算 global.php 和给定区域之间的差异,并将其保存为新文件 __[area_code]_global_diff.php
如果差异文件存在,它将复制加载的全局配置到给定区域,并用差异来修复配置。
原始区域文件(例如 frontend.php)将被跳过。
在我的案例中(API 调用),它将简单的请求时间提高了 14%,内存使用减少了 33%。