gpt4 book ai didi

magento - 如果启用了整页缓存,则企业版 Controller 事件不会触发

转载 作者:行者123 更新时间:2023-12-04 06:27:18 25 4
gpt4 key购买 nike

所以在我们最近的一次发布中,我们有很多我们作为观察者的事件,比如 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 以任何一种方式都可以调用,但在我看来这是一个错误,或者如果您启用了整页缓存,则永远不要将这些 Controller 调度事件用于任何事情。有什么想法吗?

最佳答案

鉴于整页缓存的性质,我称之为“按预期工作”。虽然不触发某些事件可能有点奇怪,但他们必须选择一条线,这对我来说很有意义,特别是因为 Controller 从未真正被调度过。

您应该将这些 Controller 调度事件用于影响页面的任何内容(因为它仍然需要生成),但是如果您将其用于跟踪等,则不合适。

关于magento - 如果启用了整页缓存,则企业版 Controller 事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com