Magento 2 Media Gallery slow loading
Nous avons récemment constaté une lenteur extrême de chargement de la Magento_MediaGallery (nouvelle gallerie ) sur une version 2.4.2 de Magento.
En utilisant un fichier xml : directory.xml nous pouvons choisir d'exclure certains dossiers inutiles.
A placer dans un module déjà déclaré, à la racine de etc/
Exemple de fichier directory.xml
<?xml version="1.0"?>
<!--
du -a | cut -d/ -f2 | sort | uniq -c | sort -nr
24/06/22 : 120256 fichiers
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_MediaGalleryApi:etc/directory.xsd">
<exclude>
<patterns>
<pattern name="amasty">/^amasty/</pattern>
<pattern name="mageplaza">/^mageplaza/</pattern>
<pattern name="icirelais_remove">/^icirelais/</pattern>
<pattern name="css">/^css/</pattern>
<pattern name="ampromo">/^ampromo/</pattern>
<pattern name="amshopby">/^amshopby/</pattern>
<pattern name="atos">/^atos/</pattern>
<pattern name="catalog">/^catalog/</pattern>
<pattern name="clnews">/^clnews/</pattern>
<pattern name="dhl">/^dhl/</pattern>
<pattern name="dpdfrance">/^dpdfrance/</pattern>
<pattern name="xmlconnect">/^xmlconnect/</pattern>
<pattern name="mageworks">/^mageworks/</pattern>
<pattern name="mageworks">/^sitemap/</pattern>
</patterns>
</exclude>
</config>
C'est le fichier ExcludedPatternsConfig par sa fonction get qui fait l'exclusion :
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\MediaGallery\Model\Directory;
use Magento\Framework\Config\DataInterface;
use Magento\MediaGalleryApi\Model\ExcludedPatternsConfigInterface;
/**
* Media gallery directory config
*/
class ExcludedPatternsConfig implements ExcludedPatternsConfigInterface
{
private const XML_PATH_EXCLUDED_PATTERNS = 'exclude/patterns';
/**
* @var DataInterface
*/
private $data;
/**
* @param DataInterface $data
*/
public function __construct(DataInterface $data)
{
$this->data = $data;
}
/**
* Returns list of blacklist regexp patterns
*
* @return array
*/
public function get() : array
{
return $this->data->get(self::XML_PATH_EXCLUDED_PATTERNS);
}
}
Si vous utilisez encore la vieille version du module Gallerie de Magento, utilisez plutôtun fichier di.xml pour faire vos exclusions :
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
<arguments>
<argument name="dirs" xsi:type="array">
<item name="exclude" xsi:type="array">
<item name="ampromo" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+ampromo[/\\]*$</item>
</item>
<item name="amshopby" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+amshopby[/\\]*$</item>
</item>
<item name="bannerslider" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+banner[/\\]*$</item>
</item>
</item>
</argument>
</arguments>
</type>
</config>
Comment basculer sur la nouvelle gallerie (à partir de 2.4.x) : https://experienceleague.adobe.com/docs/commerce-admin/content-design/media/gallery/media-gallery.html?lang=en
Bonne optimisation