Ich verwende einen Aufruf an Mage::getSingleton('core/cache')->save()
einen meiner Controller und speichere den zwischengespeicherten Wert im Dateisystem ( var/cache/
), obwohl Redis als mein Cache-Backend konfiguriert ist und anscheinend alle anderen Caches in Magento ordnungsgemäß in Redis gespeichert werden.
Hier ist der Aufruf von save ():
Mage::getSingleton('core/cache')->save($imageUrl, $cacheKey, array(Mage_Core_Model_Config::CACHE_TAG));
Hier ist mein app/etc/local.xml
:
<cache>
<backend>Cm_Cache_Backend_Redis</backend>
<backend_options>
<server>redis11.i</server>
<port>6379</port>
<database>2</database>
<password></password>
<persistent>cache-db2</persistent>
<force_standalone>0</force_standalone>
<connect_retries>1</connect_retries>
<automatic_cleaning_factor>0</automatic_cleaning_factor>
<compress_data>1</compress_data>
<compress_tags>1</compress_tags>
<compress_threshold>20480</compress_threshold>
<compression_lib>gzip</compression_lib>
</backend_options>
</cache>
Warum wird dieser zwischengespeicherte Wert anstelle von Redis im Dateisystem gespeichert?
Antworten:
Sie sollten Mage :: app () -> getCache () -> save () verwenden, wenn der Cache in der Methode getCache () initialisiert wird, indem Sie die Konfiguration abrufen und diese für das Cache-Objekt festlegen, während dies der Konstruktor Mage_Core_Model_Cache nicht tut Soweit ich sehen kann, wird dies auf das Standard-Caching-Modell zurückgesetzt.
Habe einen kurzen Test gemacht mit:
Weitere Informationen:
Mage_Core_Model_App :: _ initCache verwendet tatsächlich Folgendes, um das Cache-Objekt einzurichten:
Dies bedeutet, dass das Kern-Cache-Objekt nicht zur Registrierung als Singleton zur Registrierung hinzugefügt wird. Wenn Sie es zum ersten Mal als Singleton aufrufen, wird ein neues Kern-Cache-Objekt erstellt und der Konstruktor ohne Optionen aufgerufen.
quelle