2011-01-20 8 views
2

my previous questionに基づいて、Enterprise Edition Magentoでは、使用可能なコントローライベントを使用することをお勧めしません。フルページキャッシュを有効にします。実際のページで何かをしている場合にのみ、これらのイベントを使用したいと考えています。ページがロードされる前にコードを実行する最良の方法は

しかし、controller_action_predispatchにはオブザーバがあり、そこからURLのパラメータを取得し、正しく設定されていればそこからいくつかの機能を追加するというMagento用の拡張機能をいくつか作成しました。たとえば、クライアントが電子メールキャンペーン用のURLにプロモーションコードを入れることができるようにし、そのリンクをクリックすると顧客の見積もりに添付されるようにしました。ページが読み込まれる前にパラメータを探し、私たちのことをする必要があります。

今、この完全なページキャッシュがあるので、正しく動作しません。 Observerではこれをやっておらず、コードを拡張するほうがいいでしょうか?あるいは、これを行うより良いオブザーバーがいますか?私たちは1つ前にHTTP送信応答を使用しようとしましたが、結果は混在していました。

+0

は、あなたのコードは、Magentoのに応じて、またはスタンドアロンのphpすることができますか?おそらく何かをログに記録しようとすると、いつも呼び出される 'register_shutdown_function'を使うことができると考えてください。 – joksnet

+0

それはMagentoに依存しています、我々はそれをMagentoのやり方で保つことを望みました。 –

答えて

3

controller_action_predispatchイベントへの投資を継続し、コードのMagentoフレームワークを維持したい場合は、2つのことができます。

  1. キャッシュキーにURLパラメータを追加します。このようにして、FPCは、キャッシングの利点を引き続き提供しながら、パラメタがトリガできるページの異なるバージョンを提供します。独自のPageCacheコンテナを作成し、キャッシュキーをオーバーライドする例については、blog postを参照してください。

  2. これらのコントローラをFPCから除外します。明らかに、影響を受けるコントローラーがサイト全体のサブセットである場合にのみ有効です。そうしないと、キャッシュの効果が得られません。

乾杯、 JDは

+0

+1そのブログ記事にリンクしています。それは素晴らしい発見です。 – clockworkgeek

+0

ありがとうジョナソン、最高の確かに –

+0

私は自分の状況のた​​めに、私は単にクエリをキャッシュすることからそれを停止するためにno_cacheを追加することもできますが、これはリンクを作成する人がこれを覚えていることを確認する必要がある。 –

4

適切なイベントが見つからない場合は、イベントをリクエストするか、自分で作成してください。おそらくEnterprise_PageCache_Model_Processorを拡張し、それが何を返すかを確認します。空でなければ新しいイベントをトリガーします。その後、単一のオブザーバーで両方のイベントを監視します。

関連する問題