# Improve Performance

## maritos/magento2-performance-fixes

### Description

To improve first request GraphQL performance we can use Composer package [maritos/magento2-performance-fixes](https://libraries.io/packagist/maritos%2Fmagento2-performance-fixes). (Source code available [here](https://github.com/maritos/magento2-performance-fixes))

In general, this package changes the default cache building process, when the cache is empty, it locks all incoming requests and waits until the first request finishes building cache and then all following requests instead of rebuilding cache just use it right away.

So yeah, up to 30% speed improvements for GraphQL requests on the first load from a thin air.

### Installation

#### Install Composer package

Install Composer package in your project.

```bash
npm run cli # open CLI

c require maritos/magento2-performance-fixes # install package
```

#### Extend composer.json

Add `extra` field in `composer.json`

{% code title="composer.json" %}

```javascript
"extra": {
    "magento-force": "override",
    "enable-patching": true,
    "composer-exit-on-patch-failure": true,
    "patches": {
        "magento/framework": {
            "performance fix #1 - vendor/magento/framework/Config/Data.php": "vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/Config/Data.patch",
            "performance fix #2 - vendor/magento/framework/App/ObjectManager/ConfigLoader.patch": "vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/App/ObjectManager/ConfigLoader.patch",
            "performance fix #3 - vendor/magento/framework/Interception/Config/Config.patch": "vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/Interception/Config/Config.patch"
        }
    }
}
```

{% endcode %}

#### Run composer install

After `composer install` make sure patches have been applied.\
Composer install output should be similar to:

```javascript
  - Applying patches for magento/framework
    vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/Config/Data.patch (performance fix #1 - vendor/magento/framework/Config/Data.php)
    vendor/maritos/magento2-performance-fixes/vendorPatch/magento/framework/App/ObjectManager/ConfigLoader.patch (performance fix #2 - vendor/magento/framework/App/ObjectManager/ConfigLoader.patch)
    vendorPatch/magento/framework/Interception/Config/Config.patch (performance fix #3 - vendor/magento/framework/Interception/Config/Config.patch)
```

That's it! Happy coding!
