0

我正在制作一个完整的观察者模块,以便根据用户的导航器语言更改商店视图。我的主要功能是由<controller_action_predispatch>事件启动的。

在没有激活 FPC 的情况下一切正常。但是一旦启用了 FPC 并生成了它的缓存,Magento 就不再通过控制器(例如,不在产品视图、类别视图或主页等常规页面上)。我进行了研究,发现事件<http_response_send_before>总是被发送,即使启用了 FPC。所以我改变了我之前的事件监听器,它在没有 FPC 的情况下也能很好地工作。

现在的问题是,当 FPC 被激活时,事件仍然被正确调度(在 Mage 函数中记录),但没有附加任何观察者。我不知道$_events一旦启用 FPC,Magento 如何初始化 App.php 中的,但这似乎是问题的核心。我还没有在互联网上找到任何关于此的帖子,所以任何帮助将不胜感激。

PS:

  • 我在 Magento EE 1.14.0.1 上工作。
  • 我在相同版本的干净 Magento 上复制了相同的东西,并且“问题”也存在。
  • 在我更改观察到的事件后,缓存当然完全刷新了。
  • 使用自定义事件也会发生此行为。
4

1 回答 1

0

我偶然发现你的帖子有完全相同的问题。

启用 Magento EE 1.14 FPC 后,此事件;

http_response_send_before

使用干净的缓存最多触发 2 次。之后,它不再触发和/或您指定的方法被缓存。因此,在对其他事件进行了大量测试之后,我发现了这一点;

controller_action_predispatch

在 FPC 开启的情况下持续触发。把你观察到的事件换成这个,世界上一切都应该是正确的。

最好的,汤姆

于 2015-09-23T11:34:11.797 回答