monogo/optimize-object-manager

Magento 2 模块,用于优化编译后的对象管理器

1.0.3 2020-06-11 20:38 UTC

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%。