Почему полный страничный кеш отключает блочный кеш?

13

У меня есть статическая часть, которая включена на каждой странице (навигация), но генерация занимает много времени. Вот почему я установил время жизни кеша и статический ключ кеша.

Работает нормально, пока не включен FPC. Затем блок все еще генерируется снова для вновь вызываемой страницы и не обрабатывается из кэша блока.

Есть эта строка в Enterprise_PageCache_Model_Observer:

Mage::app()
    ->getCacheInstance()
    ->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); // disable blocks cache

Что является причиной этого? Для меня имеет смысл по-прежнему кэшировать определенные блоки, даже если FPC включен, потому что в противном случае генерация страниц, которые не полностью обслуживаются из кэша, замедляется.

  1. Какое решение о дизайне стоит за этим?
  2. Какое хорошее решение вокруг этого?
  3. Было бы вредно, если бы я просто убрал этот запрет на блокировку кэша?
Alex
источник
знаете, это старый вопрос, но вы нашли что-нибудь по этому поводу?
Ксельбер

Ответы:

1

Эта ошибка была исправлена ​​в Magento 1.14.2.0. (ссылка http://merch.docs.magento.com/ee/user_guide/magento/release-notes-ee-1.14.2.html в разделе Известные проблемы)

user487772
источник
2
Я только что наткнулся на это на 1.14.2.4. Я вижу, что логика со временем изменилась. Код окружен символом if: if ($this->_processor->canProcessRequest($request) && ($request->isStraight() || $this->_processor->getRequestProcessor($request)) ) { Mage::app()->getCacheInstance()->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); } но я не могу найти объяснения причин, по которым вы бы запретили кеш блоков. Можете ли вы просветить больше?
PanPipes,
2

Чтобы можно было отключить FPC для динамических блоков, например, на странице оформления заказа или в корзине. Что касается третьего вопроса, по моему мнению, вы не должны делать этого, что может нарушить процесс FPC (чтобы быть откровенным, чтобы дать правильный ответ, мы должны также проверить исходный код).

Огуз Челикдемир
источник
Ваша первая часть касается моего первого вопроса? Если да, почему необходимо отключить кэш блоков, чтобы отключить FPC на странице оформления заказа или корзины? На самом деле, кеш блоков отключен только если вся страница кэшируется.
Алекс
Просто я проверил исходный код, который контролирует куки пользователя. Если пользователь заблокировал куки, FPC блокирует кеши. Функция _getCookie возвращает экземпляр Enterprise_PageCache_Model_Cookie, который контролирует куки пользователя.
Огуз Челикдемир,
Какое это имеет отношение к куки? И о какой строке кода вы говорите? растерян
Алекс
Алекс, сегодня вечером я еще раз проверю и вышлю тебе необходимые блоки кода.
Огуз Челикдемир,