Configuration du cache L2
La mise en cache permet de réduire le trafic réseau entre l’enregistrement du cache distant et l’application Commerce. Une instance Commerce standard transfère environ 300 Ko par requête et le trafic peut rapidement dépasser ~1 000 requêtes dans certaines situations.
Pour réduire la bande passante du réseau à Redis, stockez les données du cache localement sur chaque noeud web et utilisez le cache distant à deux fins :
- Vérifiez la version des données du cache et assurez-vous que le dernier cache est stocké localement.
- Transfert du dernier cache de l’ordinateur distant vers l’ordinateur local
Commerce stocke la version des données hachées dans Redis, en ajoutant le suffixe ":hash" à la clé normale. S’il existe un cache local obsolète, les données sont transférées à l’ordinateur local avec un adaptateur de cache.
Exemple de configuration
Utilisez l’exemple suivant pour modifier ou remplacer la section de cache existante dans le fichier app/etc/env.php
.
'cache' => [
'frontend' => [
'default' => [
'backend' => '\\Magento\\Framework\\Cache\\Backend\\RemoteSynchronizedCache',
'backend_options' => [
'remote_backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
'remote_backend_options' => [
'persistent' => 0,
'server' => 'localhost',
'database' => '0',
'port' => '6379',
'password' => '',
'compress_data' => '1',
],
'local_backend' => 'Cm_Cache_Backend_File',
'local_backend_options' => [
'cache_dir' => '/dev/shm/'
]
],
'frontend_options' => [
'write_control' => false,
],
]
],
'type' => [
'default' => ['frontend' => 'default'],
],
],
Où :
-
backend
est l’implémentation du cache L2. -
backend_options
est la configuration du cache L2.remote_backend
est l’implémentation du cache distant : Redis ou MySQL.remote_backend_options
est la configuration du cache distant.local_backend
est la mise en oeuvre du cache local :Cm_Cache_Backend_File
local_backend_options
est la configuration de cache locale.cache_dir
est une option spécifique au cache de fichier pour le répertoire dans lequel le cache local est stocké.
Adobe recommande d’utiliser Redis pour la mise en cache à distance (\Magento\Framework\Cache\Backend\Redis
) et Cm_Cache_Backend_File
pour la mise en cache locale des données dans la mémoire partagée, en utilisant : 'local_backend_options' => ['cache_dir' => '/dev/shm/']
Adobe recommande l’utilisation de la fonction cache preload
, car elle réduit considérablement la pression sur Redis. N’oubliez pas d’ajouter le suffixe ':hash' pour les clés de préchargement.
Options de cache obsolètes
À partir de Commerce 2.4, l’option use_stale_cache
peut améliorer les performances dans certains cas spécifiques.
En règle générale, le compromis avec l’attente de verrouillage est acceptable du côté des performances, mais plus le nombre de blocs ou de mises en cache est élevé, plus le marchand passe de temps à attendre les verrous. Dans certains scénarios, vous pouvez attendre un délai nombre de clés * délai de recherche pour le processus. Dans de rares cas, le marchand peut avoir des centaines de clés dans le cache Block/Config
, de sorte que même un petit délai de recherche pour le verrouillage peut coûter des secondes.
Le cache obsolète fonctionne uniquement avec un cache L2. Avec un cache obsolète, vous pouvez envoyer un cache obsolète, alors qu’un nouveau cache est généré dans un processus parallèle. Pour activer le cache obsolète, ajoutez 'use_stale_cache' => true
à la configuration supérieure du cache L2.
Adobe recommande d’activer l’option use_stale_cache
uniquement pour les types de cache qui en bénéficient le plus, notamment :
block_html
config_integration_api
config_integration
full_page
layout
reflection
translate
Adobe ne recommande pas d’activer l’option use_stale_cache
pour le type de cache default
.
Le code suivant illustre un exemple de configuration :
'cache' => [
'frontend' => [
'default' => [
'backend' => '\\Magento\\Framework\\Cache\\Backend\\RemoteSynchronizedCache',
'backend_options' => [
'remote_backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
'remote_backend_options' => [
'persistent' => 0,
'server' => 'localhost',
'database' => '0',
'port' => '6379',
'password' => '',
'compress_data' => '1',
],
'local_backend' => 'Cm_Cache_Backend_File',
'local_backend_options' => [
'cache_dir' => '/dev/shm/'
]
],
'frontend_options' => [
'write_control' => false,
],
],
'stale_cache_enabled' => [
'backend' => '\\Magento\\Framework\\Cache\\Backend\\RemoteSynchronizedCache',
'backend_options' => [
'remote_backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
'remote_backend_options' => [
'persistent' => 0,
'server' => 'localhost',
'database' => '0',
'port' => '6379',
'password' => '',
'compress_data' => '1',
],
'local_backend' => 'Cm_Cache_Backend_File',
'local_backend_options' => [
'cache_dir' => '/dev/shm/'
],
'use_stale_cache' => true,
],
'frontend_options' => [
'write_control' => false,
],
]
],
'type' => [
'default' => ['frontend' => 'default'],
'layout' => ['frontend' => 'stale_cache_enabled'],
'block_html' => ['frontend' => 'stale_cache_enabled'],
'reflection' => ['frontend' => 'stale_cache_enabled'],
'config_integration' => ['frontend' => 'stale_cache_enabled'],
'config_integration_api' => ['frontend' => 'stale_cache_enabled'],
'full_page' => ['frontend' => 'stale_cache_enabled'],
'translate' => ['frontend' => 'stale_cache_enabled']
],
],