Magento Geolocalization/FPC
В Magento EE мне нужно перенаправить клиентов в зависимости от страны происхождения, языка браузера и предыдущего предпочтения, заданного в файле cookie.
У меня огромные проблемы с тем, чтобы он работал с FPC.
Я пытался наблюдать controller_action_predispatch
событие, но FPC как-то кеширует мою инструкцию по перенаправлению, и клиент не перенаправляется.
Затем я попробовал другое решение: расширение метода run() в Mage_Core_Model_App
чтобы выполнить операции до того, как FPC начнет работать.
К сожалению, я не знаю почему, внутри этого метода вы не можете получить доступ Mage::getModel()
, Mage::helper()
, Mage::getConfig()
ЕСС
Не могли бы вы мне помочь?
Спасибо
1 ответ
Я недавно пережил точно такую же боль. Ты на правильном пути;
controller_action_predispatch
Это правильное событие для наблюдения, и вы можете использовать его довольно счастливо, если вы перенаправляете на страницу категории или продукта с включенным FPC. Проблема в домашней странице, которая является страницей CMS. Кэш страницы cms не запускает controller_action_predispatch. Я обошел это, добавив это своему наблюдателю;
public function switchUser($event)
{
// CMS page bug, disable FPC to still use observer
$action = $event->getEvent()->getControllerAction();
if($action instanceof Mage_Cms_IndexController) {
$cache = Mage::app()->getCacheInstance();
$cache->banUse('full_page');
}
// do the rest of your code here
}
Блоки внутри страницы cms будут по-прежнему кэшироваться, поэтому страница по-прежнему нестабильна, хотя, очевидно, не так быстро, как при полной FPC. Это разумный компромисс, на мой взгляд.