No Magento EE 1.12.0.0 Parece que, independentemente de quais alterações de configuração eu faço app/etc/local.xml
, o cache de arquivos padrão continua a ser usado (o que é evidenciado pelo var/cache/
preenchimento sempre).
Expectativa
- Memcached é usado como fast_backend.
- O banco de dados é usado como slow_backend.
- O cache do arquivo não é usado (ou seja
var/cache/
, sempre deve estar vazio).
Saída real
- Memcached é usado como fast_backend.
- O banco de dados não é usado.
- O cache do arquivo está sendo usado.
Procedimento de teste
- Faça a alteração da configuração para
app/etc/local.xml
. - Reinicie o Memcached e o Apache (apenas por uma boa medida e está na minha caixa de desenvolvimento local, para que eu também).
- Limpe o cache do arquivo (
rm -rf var/cache/*
). - Atualize a página inicial.
- Verifique o conteúdo do cache do arquivo (
ls var/cache
). - Fique triste e retorne ao # 1 com uma alteração de configuração diferente.
O Config
O conteúdo do meu app/etc/local.xml
é o seguinte:
<config>
<global>
<install>
<date><![CDATA[{{actual_data}}]]></date>
</install>
<crypt>
<key><![CDATA[{{actual_data}}]]></key>
</crypt>
<disable_local_modules>false</disable_local_modules>
<resources>
<db>
<table_prefix><![CDATA[]]></table_prefix>
</db>
<default_setup>
<connection>
<host><![CDATA[{{actual_data}}]]></host>
<username><![CDATA[{{actual_data}}]]></username>
<password><![CDATA[{{actual_data}}]]></password>
<dbname><![CDATA[{{actual_data}}]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</default_setup>
</resources>
<session_save><![CDATA[db]]></session_save>
<cache>memcached</cache>
<slow_backend>database</slow_backend>
<slow_backend_store_data>1</slow_backend_store_data>
<memcached>
<servers>
<server>
<host><![CDATA[{{actual_data}}]]></host>
<port><![CDATA[{{actual_data}}]]></port>
<persistent><![CDATA[0]]></persistent>
<weight><![CDATA[2]]></weight>
<timeout><![CDATA[10]]></timeout>
<retry_interval><![CDATA[10]]></retry_interval>
<status><![CDATA[]]></status>
</server>
</servers>
<compression><![CDATA[0]]></compression>
<cache_dir><![CDATA[]]></cache_dir>
<hashed_directory_level><![CDATA[]]></hashed_directory_level>
<hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
<file_name_prefix><![CDATA[]]></file_name_prefix>
</memcached>
</global>
<admin>
<routers>
<adminhtml>
<args>
<frontName><![CDATA[admin]]></frontName>
</args>
</adminhtml>
</routers>
</admin>
</config>
Respostas:
Eu acho que esse não é o formato certo para os nós de cache. Meu entendimento é que todas as configurações de cache devem ser aninhadas dentro do
<cache>
nó. Portanto, para usar o cache de dois níveis com o banco de dados memcached +, seria algo como isto:Lembre-se de que
<full_page_cache>
pode ser configurado exatamente da mesma maneira e, se desejar, pode usar configurações diferentes. São apenas duas instâncias de cache separadas.Assim como uma nota lateral, eu altamente recomendo usando Redis vez. Ele suporta tags, para que possa ser usado como um cache de nível único e terá um desempenho muito melhor que o banco de dados memcached + de dois níveis.
fonte
<full_page_cache>
possivelmente estaria preenchendovar/cache
? É meu entendimento que ele usavar/full_page_cache
. Eu também tentei usar o mesmo<cache>...</cache>
(seu estilo) para<full_page_cache>
eenterprise.xml
sem sucesso. No que diz respeito ao Redis, infelizmente, usar o back-end do banco de dados é o requisito.<cache>...<servers>...<server1>...</server1>
. É a1
deserver1
importante?<servers>
. Você poderia usar foo, bar, baz tão facilmente quanto server1, server2, server3. Você está certo de que afull_page_cache
instância obtém seu próprio subdiretóriovar
se estiver usando arquivos.