Configuração do cache L2
O armazenamento em cache permite uma redução no tráfego de rede entre o armazenamento remoto em cache e o aplicativo Commerce. Uma instância padrão do Commerce transfere cerca de 300 kb por solicitação e o tráfego pode crescer rapidamente para mais de ~1000 solicitações em algumas situações.
Para reduzir a largura de banda da rede para Redis, armazene os dados do cache localmente em cada nó da Web e use o cache remoto para duas finalidades:
- Verifique a versão dos dados do cache e certifique-se de que o cache mais recente esteja armazenado localmente
- Transferir o cache mais recente do computador remoto para o computador local
O Commerce armazena a versão de dados com hash em Redis, com o sufixo ":hash" anexado à chave regular. Se houver um cache local desatualizado, os dados serão transferidos para o computador local com um adaptador de cache.
Exemplo de configuração
Use o exemplo a seguir para modificar ou substituir a seção de cache existente no arquivo 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'],
],
],
Onde:
-
backend
é a implementação do cache L2. -
backend_options
é a configuração de cache L2.remote_backend
é a implementação de cache remoto: Redis ou MySQL.remote_backend_options
é a configuração de cache remoto.local_backend
é a implementação de cache local:Cm_Cache_Backend_File
local_backend_options
é a configuração de cache local.cache_dir
é uma opção específica de cache de arquivo para o diretório onde o cache local está armazenado.
O Adobe recomenda o uso de Redis para cache remoto (\Magento\Framework\Cache\Backend\Redis
) e Cm_Cache_Backend_File
para o cache local de dados na memória compartilhada, usando: 'local_backend_options' => ['cache_dir' => '/dev/shm/']
A Adobe recomenda o uso do recurso cache preload
, pois ele diminui drasticamente a pressão sobre os Redis. Não se esqueça de adicionar o sufixo ':hash' para chaves de pré-carregamento.
Opções de cache obsoletas
A partir do Commerce 2.4, a opção use_stale_cache
pode melhorar o desempenho em alguns casos específicos.
Geralmente, a compensação com espera por bloqueio é aceitável do lado do desempenho, mas quanto maior o número de blocos ou cache que o comerciante tem, mais tempo é gasto aguardando bloqueios. Em alguns cenários, você pode aguardar um número de chaves * tempo limite de pesquisa por esse processo. Em alguns casos raros, o comerciante pode ter centenas de chaves no cache do Block/Config
, portanto, até mesmo um tempo limite de pesquisa pequeno para bloqueio pode custar segundos.
O cache obsoleto funciona somente com um cache L2. Com um cache obsoleto, você pode enviar um cache desatualizado, enquanto um novo é gerado em um processo paralelo. Para habilitar cache obsoleto, adicione 'use_stale_cache' => true
à configuração superior do cache L2.
A Adobe recomenda habilitar a opção use_stale_cache
apenas para os tipos de cache que mais se beneficiarem dela, incluindo:
block_html
config_integration_api
config_integration
full_page
layout
reflection
translate
O Adobe não recomenda habilitar a opção use_stale_cache
para o tipo de cache default
.
O código a seguir mostra um exemplo de configuração:
'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']
],
],