Bagaimana cara menonaktifkan cache untuk bagian atau blok tertentu

31

Saya telah mengembangkan fungsionalitas gerobak bar atas untuk bagian depan toko yang menampilkan tiga produk terbaru ditambahkan ke troli ini berfungsi dengan baik ketika cache dinonaktifkan tetapi ketika saya mengaktifkan cache itu menunjukkan subtotal aneh di gerobak atas dan produk aneh di gerobak.

Ini membuat saya sedih: '(

Saya tahu ini terjadi karena cache. Apakah ada sesuatu yang saya dapat menonaktifkan cache untuk bagian ini saja? Saya telah mencoba menonaktifkan cache html blok dan periksa sekarang ini berfungsi dengan baik tetapi saya menemukan flat kategori mengalami masalah yang tidak ditentukan ketika blok HTML dinonaktifkan.

ravisoni
sumber
2
Apakah Anda memecahkan masalah Anda? Bagaimana? Silakan bagikan detailnya dengan kami. Terima kasih!
Fabian Blechschmidt

Jawaban:

32

Anda dapat mencoba

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

atau

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

untuk mengaturnya ke nol.

Tapi mungkin lebih baik menggunakan ajax.

Ada artikel bagus tentang nullatau 0artinyahttp://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workarounds-usage-in-cache-block-policy/ (tautan rusak)

Dmytro Zavalkin
sumber
hmm penggunaan ajax bisa menyelesaikan masalah. Saya akan mencoba ini, terima kasih atas bantuan Anda.
ravisoni
2
Saya pikir null= tidak pernah cache dan 0= cache secara permanen?
patokan
1
null= tidak pernah cache, benar. Namun, saya tidak yakin mungkin untuk nilai argumen nulldengan <action>direktif.
Dmytro Zavalkin
2
<action method="setCacheLifetime"><s>null</s></action>bekerja untukku. TNX!
ruuter
6
Mengatur Cache Seumur Hidup ke "0" tidak menonaktifkan cache. Hanya "null" yang akan menonaktifkannya!
Anna Völkl
9

Anda dapat menonaktifkan cache di getChildHtml (). Seperti inilah tanda tangannya:

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

Ini harus melakukan trik:

echo $this->getChildHtml('block', false);
Rick Kuipers
sumber
saya sudah mencoba ini .. sebenarnya sudah dikodekan di top.phtml ini tidak berfungsi dalam kasus itu
ravisoni
Itu mungkin di-cache juga jadi saya kira itu tidak akan banyak berpengaruh. Apakah ada kemungkinan Anda bisa menariknya keluar dari bagian itu? Saya tidak berpikir ada pilihan lain ...
Rick Kuipers
9

Dalam file xml tertentu. Katakan catalog.xml

Dalam hal itu untuk blok referensi tertentu Di blok itu atur aksi batas cache menjadi nol

Contoh 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>
Vinay Shah
sumber