События Enterprise Edition Controller не запускаются, если включен Full Page Cache - PullRequest
8 голосов
/ 19 января 2011

Итак, во время одного из наших недавних запусков у нас было много событий, за которыми мы наблюдали, таких как controller_action_predispatch. Как только сайт заработал, мы начали замечать, что наших наблюдателей никогда не вызывали. После небольшого исследования один из наших разработчиков нашел этот блок кода в Mage_Core_Model_App около строки 292

if ($this->_cache->processRequest()) {
            $this->getResponse()->sendResponse();
        } else {
            $this->_initModules();
            $this->loadAreaPart(Mage_Core_Model_App_Area::AREA_GLOBAL, Mage_Core_Model_App_Area::PART_EVENTS);

            if ($this->_config->isLocalConfigLoaded()) {
                $this->_initCurrentStore($scopeCode, $scopeType);
                $this->_initRequest();
                Mage_Core_Model_Resource_Setup::applyAllDataUpdates();
            }

            $this->getFrontController()->dispatch();
        }

Как вы можете видеть, если $ this -> _ cache-> processRequest () верно, то есть, когда включен полный кеш страниц, вы никогда не попадете в рассылку. Разработчик нашел http_response_send_before, который получает вызов в любом случае, но мне кажется, что это ошибка, или вы никогда не должны использовать эти события диспетчеризации для чего-либо, если у вас включено кэширование на полную страницу. Есть мысли?

Ответы [ 4 ]

7 голосов
/ 19 января 2011

Учитывая характер полного кэширования страниц, я бы назвал это «работает как задумано». Хотя может быть немного странно не запускать некоторые события, им нужно было выбрать строку, и это имеет смысл для меня, тем более что контроллер никогда не отправляется.

Вы должны использовать эти события диспетчеризации для всего, что влияет на страницу (поскольку она все еще должна быть сгенерирована), но если вы используете ее для отслеживания и тому подобное, нет, это не будет уместно.

4 голосов
/ 22 февраля 2011

См. Здесь, если вы хотите узнать, как кэширование работает с Magento Enterprise

http://magentophp.blogspot.com/2011/02/magento-enterprise-full-page-caching.html

1 голос
/ 27 февраля 2015

Единственное надежное событие для прослушивания с включенным полным кэшем страниц и без него - http_response_send_before.

0 голосов
/ 30 января 2019

controller_front_send_response_before

Это событие будет запущено независимо от того, включена ли FPC

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