Я использую кэш блока Magento для главного блока навигации. Проблемой является блок, должен генерировать некоторые URL для файлов в каталоге кожи, который не может быть помещен в файлы CSS, поскольку имена файлов зависят от данных модели категории.
Теперь, когда я открываю магнето с помощью безопасного соединения (https://), блок навигации выбирается от кэша и отправляется в браузер, но с URL http://, приводящими к предупреждению в большинстве браузеров о небезопасных элементах на странице.
Я хотел бы отдельных кэшей за безопасные и небезопасные соединения. Блок навигации расширяет класс Mage_Catalog_Block_Navigation
и поэтому имеет следующую конфигурацию кэша:
$this->addData(array(
'cache_lifetime' => false,
'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG),
));
Хммм проще, чем я думал...
Я попробовал переопределить метод getCacheKey()
, добавив флаг с текущим статусом безопасности, но сначала это не принесло успеха, но после нескольких чисток кэша это, кажется, работает:
public function getCacheKey()
{
$key = parent::getCacheKey();
$key .= Mage::app()->getStore()->isCurrentlySecure() ? '_S' : '_U';
return $key;
}