2011-01-20 70 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並檢查它是否返回,如果非空則觸發新事件。然後用一個觀察者觀看這兩個事件。

相關問題