Magento - Magento Cache - PullRequest
       22

Magento - Magento Cache

3 голосов
/ 21 сентября 2010

Я использую memcache.

Я хочу понять, что хранится в кэше Magento и как?

Сохраняет ли magento переменную кэша с областью сайта или областью магазина?

Я погуглил и набрал код, но не смог ничего сделать,

Пожалуйста, если кто-нибудь может направить меня на исправление ссылок и пути

Спасибо и С уважением, Саурабй

Ответы [ 4 ]

13 голосов
/ 23 сентября 2010

Если вы перейдете в раздел «Управление кэшем» административной области, то увидите, что он кэширует (конфигурация, конфигурация макета, вывод блочного html, переводы, типы eav и т. Д.).Я не эксперт по механизмам кэширования Magento, но вот несколько случайных моментов, которые могут быть полезны (возможно).(Также обратите внимание, что я знаком только с Magento 1.3.x, а не с 1.4.x, поэтому все могло измениться.)

Кэширование фактически хранится в каталоге var / cache.Там находится множество каталогов (mage-0, mage-1, mage-2), и каждый каталог имеет файлы кэша.Выполните команду ls var/cache/mage*/*, чтобы просмотреть все файлы.

Конфигурация - этот источник конфигурации различен.Ваше приложение / etc / local.xml и все файлы config.xml (которые находятся в директории etc каждого модуля) объединены в один большой объект конфигурации.Затем Magento выполняет чтение из таблицы core_config_data, чтобы обновить объект конфигурации.Затем конфигурация записывается в файл кэша, так что в следующий раз, когда будет сделан запрос, ему не нужно открывать кучу файлов конфигурации и обращаться к базе данных.Каким-то образом эта информация сохраняется в куче файлов в var / cache.Для некоторого понимания сделайте ls var/cache/mage*/*CONF*.

Layout - это очень похоже на конфигурацию ... в каталоге app / design / frontendOrAdminhtml / yournamespace / layout / есть несколько файлов xml и все этиобъединяются в один объект конфигурации макета, а затем кэшируются в каталоге кэша.

Блок HTML - фактический HTML-код, сгенерированный блоком, кэшируется.Каждый блок может решить, как долго он будет кэшироваться.

Наконец, чтобы (не совсем) ответить на ваш вопрос о том, является ли кеш для сайта или магазина, я не могу сказать, поскольку у меня не было необходимости настраивать мульти-сайт / мульти-магазинМагазин пока.Похоже, что может быть некоторыми файлами, относящимися к магазину / веб-сайту, но я не вижу, что они действительно организованы логически.Например, в одном из моих экземпляров я вижу файл var / cache / mage - f / mage --- LAYOUT_FRONTEND_STORE0_DEFAULT_BLANK_SEO и файл var / cache / mage - f / mage --- LAYOUT_FRONTEND_STORE1_DEFAULT_BLANK_SEO ... но снова янастроено только одно хранилище, и эти два файла имеют одинаковое содержимое.Удачи с этим!

1 голос
/ 09 марта 2012

Ваша конфигурация Memcache в ./app/etc/local/xml будет определять, что на самом деле кэширует Memcache.

Если вы используете только одноуровневый кеш (без), то Magento сохранит егокеш (полностью) в Memcache.

HOWEVER без определения slow_backend - это кеширующий контент, без cache_tags - т.е.без возможности различать элементы кэша

Например.конфигурация, блок, макеты, переводы и т. д.

Таким образом, без определенного вы не можете обновлять кэши по отдельности, фактически вам почти всегда придется полагаться на «Flush Cache Storage», чтобы увидеть, как обновления выполняютсяЭффект.

Мы написали хорошую статью, которая освещает вашу проблему - http://www.sonassi.com/knowledge-base/magento-knowledge-base/what-is-memcache-actually-caching-in-magento/

1 голос
/ 08 сентября 2011

Лучшее решение, которое я нашел, - это использовать двухуровневый кеш.Обратитесь к приложению / etc / local.xml.additional, чтобы узнать, как поместить туда узлы memcached сервера.Обратите внимание, что внутри тега <servers> у вас должны быть такие теги, как <server1> и <server2>, инкапсулирующие настройки каждого узла memcached.

<cache>
    <backend>memcached</backend>
    <slow_backend>database</slow_backend>
</cache>

Таким образом, весь кеш является общим.

Чтобы очистить его так, как я это делаю, нужно:
1. выключить apache
2. подключиться к mysql и подключиться к magento db и запустить truncate core_cache;truncate core_cache_tag.
3. Затем я отскакиваю узлы memcached.
4. Я перезапускаю apache, но держу его вне балансировщика нагрузки, пока не нажму хотя бы один раз, чтобы сгенерировать кэш кода операции APC.В противном случае груз может взлететь через крышу.

Все это кажется экстремальным, но я обнаружил, что это работает для меня.Очистка кеша с использованием бэкэнда очень медленная.У меня около 100 тыс. Записей в таблице core_cache и около 1 млн. Записей в core_cache_tag.Если я не делаю так, иногда я получаю странное поведение.

1 голос
/ 24 сентября 2010

Вы также можете использовать некоторые из очень хороших инструментов анализа и отчетности memcached

http://code.google.com/p/memcached/wiki/Tools

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...