Что означает «недействительный» кеш в Magento? - PullRequest
18 голосов
/ 08 декабря 2011

Что означает администратор Magento в разделе «Управление кэшем», когда он показывает, что кэш признан недействительным? Как Magento узнает, что кеш недействителен? В частности, меня интересует HTML-кеш блоков. Какие условия приведут к тому, что этот кеш будет отображаться как недействительный?

Ответы [ 3 ]

17 голосов
/ 08 декабря 2011

В Magento всякий раз, когда вы вносите изменения в продукты, статические блоки и т. Д., Он распознает, что данные в базе данных больше не совпадают с данными в кэше.К сожалению, Magento не понимает, что данные кэша отличаются, просто что что-то отличается.

Вам нужно будет перейти в Система> Управление кэшем и обновите недействительные типы кэша.

РЕДАКТИРОВАТЬ:

Создайте модуль (или используйте существующий модуль), который можно использовать для настройки задания cron для обновления кэша.Создайте файл: {namespace} / {modulename} /Model/Observer.php

Внутри этого файла:

<?php
class <namespace>_<modulename>_Model_Observer {

  public function refreshCache() {
    try {
      $allTypes = Mage::app()->useCache();
      foreach($allTypes as $type => $blah) {
        Mage::app()->getCacheInstance()->cleanType($type);
      }
    } catch (Exception $e) {
      // do something
      error_log($e->getMessage());
    }
  }

}

В вашем модуле etc / config.xml:

<config>
  ...
  <crontab>
    <jobs>
      <{modulename}_refresh_cache>
        <schedule><cron_expr>* * * * *</cron_expr></schedule>
        <run><model>{modulename}/observer::refreshCache</model></run>
      </{modulename}_refresh_cache>
    </jobs>
  </crontab>
  ...
</config>

Теперь, если cron правильно настроен на вашем сервере, кэш будет обновляться автоматически, так же часто, как запускается cron.

1 голос
/ 10 января 2017

Ответ @Magento Guy верен, но я думаю, что приведенное ниже решение может помочь вам обновить только недействительные кеши в Magento.

Я использую Bitnami Magento Stack, для меня это решение ниже было лучшимнашли.

Я пытался создать php-файл Mage_Shell_Class, но безуспешно (недопустимый массив кеша всегда был пустым, несмотря ни на что, и я действительно не представляю, почему).

Я создал php-файл 'sample.php':

<?php

require 'app/Mage.php';

$invalid = Mage::app()->getCacheInstance()->getInvalidatedTypes();

foreach($invalid as $i)
{
    Mage::app()->getCacheInstance()->cleanType($i["id"]);
}

Я поместил его в корневую папку magento, и для его запуска я использую cronjob, работающий под пользователем root.

Итак, чтобы создать cronjob для пользователя root:

sudo crontab -u root -e

И это была моя командная строка для его запуска:

* * * * * . /opt/bitnami/scripts/setenv.sh ; /opt/bitnami/php/bin/php /opt/bitnami/apps/magento/htdocs/sample.php >> /var/log/cron/cron.log 2>&1

Некоторые части в этой строкеочень специфичны для моей проблемы:

  1. Поскольку он просто обновляет недействительные кэши, я решил запускать его каждую минуту.
  2. setenv.sh - это скрипт, который помогает мне установитьокружающая среда при работе с этим конкретным битнами стакk.
  3. Чтобы получить выходные данные этого скрипта, я использовал эту последнюю часть ">> /var/log/cron/cron.log 2> & 1" для вывода ошибок в каталог, который я создал (/var / log / cron) и дал на это правильные разрешения.

Возможно, вам нужно изменить команду cron line, но я думаю, что это поможет вам.

1 голос
/ 07 декабря 2015

2015: AOE Sheduler может очистить кэш с помощью cronjob. Изменить JOB

"core_clean_cache"

с 30 2 * * * (ежедневно 2:30) до 59 * * * * (каждые 59 минут).

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