2011-01-20 69 views
2

基于my previous question,在企业版Magento中,如果您计划使用任何可用的控制器事件似乎不是一个好主意整页缓存启用。它看起来是你只想使用这些事件,如果你正在做一些实际的页面。在页面加载之前执行代码的最佳方式是什么

但是,我们已经为Magento构建了一些扩展,在controller_action_predispatch上,我们有一个观察者,从那里我们抓取URL中的一个参数,如果它被正确设置,我们从那里做一些额外的功能。例如,我们已经做到了这样,客户可以在电子邮件广告系列的网址中放置促销代码,当他们点击该链接时,它会附加到客户的报价单上。我们必须在加载页面之前查找参数并执行我们的操作。

但现在有这个完整的页面缓存它不能正常工作。那么用Observer做这件事可能更好,只是扩展代码?还是有更好的观察员来做到这一点。我们尝试在一个之前使用HTTP发送响应,并得到混合结果。

+0

取决于Magento的代码,也可以是独立的PHP?想想也许如果你只是想记录一些东西,你可以使用总是被调用的`register_shutdown_function`。 – joksnet 2011-01-20 13:11:34

+0

这取决于Magento,我们希望保持Magento的做事方式。 – 2011-01-20 13:17:15

回答

3

如果你想保持你的投资在controller_action_predispatch事件并保持在你的代码的Magento框架,你可以做几件事情。

  1. 将URL参数添加到缓存键中。这样,FPC将为页面的不同版本提供服务,而该参数可以触发,同时还可以提供缓存的好处。有关创建您自己的PageCache容器并覆盖缓存密钥的示例,请参阅此blog post

  2. 从FPC中排除这些控制器。显然这只有在受影响的控制器是整个站点的子集时才有效,否则您将无法获得任何缓存权益。

干杯, JD

4

如果您找不到合适的活动,请申请一个,或自己创建。也许延长Enterprise_PageCache_Model_Processor并检查它是否返回,如果非空则触发新事件。然后用一个观察者观看这两个事件。

相关问题