在加载页面之前执行代码的最佳方法是什么

时间:2011-01-20 12:56:25

标签: php events caching magento

基于my previous question,在Enterprise Edition Magento中,如果您计划启用整页缓存,则使用任何可用的控制器事件似乎不是一个好主意。如果您正在使用实际页面执行某些操作,您似乎只想使用这些事件。

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

但是现在有了这个整页缓存,它无法正常工作。因此,最好不要使用Observer执行此操作并只扩展代码?或者有更好的观察者来做这件事。我们尝试在一个之前使用HTTP发送响应并得到混合结果。

3 个答案:

答案 0 :(得分:4)

如果您找不到合适的活动,请先申请,或自行创建。也许扩展Enterprise_PageCache_Model_Processor并检查它返回的内容,如果非空,则触发新事件。然后用一个观察者观察这两个事件。

答案 1 :(得分:3)

如果您想继续投资controller_action_predispatch事件并留在代码的Magento框架中,您可以做一些事情。

  1. 将URL参数添加到缓存键中。这样,FPC将提供param可以触发的页面的不同版本,同时仍然提供缓存的好处。有关创建自己的PageCache容器和覆盖缓存键的示例,请参阅此blog post

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

  3. 干杯, JD

答案 2 :(得分:2)

也许auto_prepend_file指令有帮助?