特定のセクションまたはブロックのキャッシュを無効にするにはどうすればよいですか


31

カートに追加された最新の3つの製品を表示する店頭用のトップバーカート機能を開発しました。これは、キャッシュが無効になっているときに最適ですが、キャッシュを有効にすると、トップカートに奇妙な小計が表示され、カートに奇妙な製品が表示されます。

これは私を悲しくさせます: '(

これはキャッシュのために起こっていることを知っています。このセクションでのみキャッシュを無効にできるものはありますか?ブロックHTMLキャッシュを無効にしてみて、これがうまく機能していることを確認しましたが、ブロックHTMLが無効になっている場合、カテゴリflatに不特定の問題があることがわかりました。


2
問題を解決しましたか?どうやって?詳細を共有してください。ありがとう!
ファビアンブレシュミット

回答:


32

あなたが試すことができます

    <reference name="needed block">
        <action method="setCacheLifetime"><s>null</s></action>
    </reference>

または

    <reference name="needed block">
        <action method="setCacheLifetime" />
    </reference>

nullに設定します。

しかし、おそらくajaxを使用した方が良いでしょう。

nullまたは0意味についての良い記事がありますhttp://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workarounds-usage-in-cache-block-policy/ (リンクが壊れています)


うーん、ajaxを使用することで問題を解決できます。あなたの助けに感謝します。
ravisoni

2
私は思ったnull=決してキャッシュと0永久=キャッシュ?
ベンマーク

1
null=キャッシュしない、そうです。ただし、ディレクティブを使用nullして引数の値を指定できるかどうかはわかりません<action>
ドミトロZavalkin

2
<action method="setCacheLifetime"><s>null</s></action>私のために働いた。TNX!
-ruuter

6
キャッシュの有効期間を「0」に設定しても、キャッシュは無効になりません。「null」のみが無効になります!
アンナフォルクル

9

getChildHtml()でキャッシュを無効にできます。これは署名がどのように見えるかです:

public function getChildHtml($name = '', $useCache = true, $sorted = false)

これでうまくいくはずです:

echo $this->getChildHtml('block', false);

私はこれを試してみました..実際にはtop.phtmlでコーディングされていますが、この場合は機能しません
-ravisoni

それもキャッシュされる可能性があるので、あまり効果がないと思います。その部分の外に引き出すことができる可能性はありますか?私は...他のオプションがあるとは思わない
リックKuipers

9

特定のxmlファイル。catalog.xmlと言う

特定の参照ブロックの場合そのブロックでは、キャッシュ制限のアクションをnullに設定します

catalog.xmlの例

<reference name="right">
    <block type="catalog/navigation" name="catalog.product.cat.related" as="related_cat" template="catalog/navigation/list_cat.phtml" after="-" >
        <action method="unsetData"><key>cache_lifetime</key></action>
        <action method="unsetData"><key>cache_tags</key></action>
    </block>
</reference>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.