Belirli bir bölüm veya blok için önbelleği nasıl devre dışı bırakabilirim


31

Alışveriş sepetine eklenen en son üç ürünü görüntüleyen mağaza önü için bir üst bar sepeti işlevi geliştirdim, bu önbellek devre dışı bırakıldığında harika çalışıyor, ancak önbelleği etkinleştirdiğimde üst arabanın tuhaf alt toplamını ve arabanın tuhaf ürünlerini gösterdiğini gördüm.

Bu beni üzüyor: '(

Bunun önbellek yüzünden olduğunu biliyorum. Yalnızca bu bölüm için önbelleği devre dışı bırakabileceğim bir şey var mı? Html bloğu önbelleğini devre dışı bırakmayı denedim ve şimdi bunun harika çalıştığını kontrol ettim, ancak blok HTML devre dışı bırakıldığında kategori dairesinin belirtilmemiş sorunları olduğunu gördüm.


2
Sorunu çözdün mü? Nasıl? Lütfen detayları bizimle paylaşın. Teşekkürler!
Fabian Blechschmidt

Yanıtlar:


32

Deneyebilirsin

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

veya

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

boş olarak ayarlamak için.

Ama muhtemelen ajax kullanmak daha iyidir.

Hakkında nullveya 0anlamı hakkında iyi bir makale var.http://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workarounds-usage-in-cache-block-policy/ (bağlantı koptu)


ajax'ın hmm kullanımı sorunu çözebilir. Yardımın için teşekkür ederim.
ravisoni

2
Düşündüm null= hiç önbellek ve 0sürekli önbellek yok mu?
benmarks

1
null= hiçbir zaman önbellek, doğru. Ancak, ben emin argüman değerine mümkündür değilim nullile <action>direktif.
Dmytro Zavalkin 21:03

2
<action method="setCacheLifetime"><s>null</s></action>benim için çalıştı. TNX!
ruuter

6
Önbellek Ömür Boyunun "0" olarak ayarlanması önbelleği devre dışı bırakmaz. Yalnızca "boş" bunu devre dışı bırakacaktır!
Anna Völkl 14:13

9

Önbelleği getChildHtml () içinde devre dışı bırakabilirsiniz. İmza şöyle görünüyor:

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

Bu hile yapmak gerekir:

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

Ben bunu denedim .. aslında top.phtml kodlanmış bu bu durumda değil
ravisoni

Bu da önbelleğe alınabilir, bu yüzden fazla etkisi olmaz sanırım. Onu o kısmın dışına çekme şansın var mı? Başka seçenekler olduğunu sanmıyorum ...
Rick Kuipers

9

Belirli bir xml dosyasında. Catalog.xml de

Bu, belirli bir referans bloğu için Bu blokta, önbellek sınırının eylemini null olarak ayarlayın.

Catalog.xml örneği

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.