5

私は、Mage_Catalog_Block_Product_Price ブロックの magento でフル ページ キャッシュを穴あけするためのコード/パラメーターを理解するのにかなりの時間を費やしています。ページが初めて読み込まれたときに表示する価格を取得できますが、キャッシュ ID が一意の場合、価格が適切にレンダリングされません (キャッシュされるはずのときに正しくキャッシュされます)。product_id などのパラメーターを送信する必要があることはわかっていますが、$this->_placeholder->getAttribute('xx' )。そして、準備して _renderView() から価格レイアウト/ビューに送信する必要があるもの。

これまでのところ、次のことを成功させました(それぞれがテストデータを出力します)

  • モジュールの /etc フォルダーに cache.xml を作成しました
  • キャッシュ コンテナー モデルを作成し、動作を確認しました (設定が必要です)。
  • Mage_Catalog_Block_Product_Price を自分のモデルに書き直して拡張し、getCacheKeyInfo() を追加しました。

問題は、コンテナ モデルの _getCacheId() および _renderBlock() 内で、上記のように getCacheKeyInfo() と組み合わせて多くのバリエーションを試したことです。しかし、私はつまずきにぶつかっています。誰かが私を正しい方向に導くことができれば、それは大歓迎です。

4

1 に答える 1

2

フルページキャッシュにも苦労しています。
これらは私の発見であり、私にとって非常に役に立ちました。

ご覧ください:app/code/core/Enterprise/PageCache/Model/Processor/Default.php47行目

 /**
 * Check if request can be cached
 *
 * @param Zend_Controller_Request_Http $request
 * @return bool
 */
public function allowCache(Zend_Controller_Request_Http $request)
{
    foreach ($this->_noCacheGetParams as $param) {
        if (!is_null($request->getParam($param, null))) {
            return false;
        }
    }
    if (Mage::getSingleton('core/session')->getNoCacheFlag()) {
        return false;
    }
    return true;
}

この関数を見ると、フルページキャッシュを回避(無効化)する方法は2つあるようです。

GETパラメーター:
キャッシュを回避するために、接頭辞3つのアンダースコアが付いたパラメーター「store」または「from_store」を使用できます。例:

http://magentourl.com/catelog/category/view/id/123?___store

Mage::getUrl('catalog/category/view', array('id' => 123, 'query' => array('___store' => '')))

セッション変数:(
一時的な)セッション変数を設定することで、フルページのキャッシュを回避することもできます。

Mage::getSingleton('core/session')->setNoCacheFlag(true)
于 2013-02-06T13:21:06.367 に答える