33

I have developed a top bar cart functionality for store front that displays latest three products added to the cart this works great when cache is disabled but when i enable the cache it showing weird subtotal in top cart and weird products in cart.

This make me sad :'(

I know this is happening because of cache. Is there anything that I can disable the cache for this section only? I have tried disabling the block html cache and check now this was working great but I found the category flat is having unspecified issues when block HTML is disabled.

7ochem
7,61516 gold badges54 silver badges82 bronze badges
asked Apr 19, 2013 at 14:04
1
  • 2
    Did you solve your problem? How? Please share the details with us. Thanks! Commented May 9, 2013 at 7:06

3 Answers 3

34

You can try

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

or

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

to set it to null.

But probably it is better to use ajax.

There is a good article about null or 0 meaning (削除) http://blog.kyp.fr/make-a-clean-sweep-of-commons-magento-cache_lifetime-workarounds-usage-in-cache-block-policy/ (削除ここまで) (link is broken)

7ochem
7,61516 gold badges54 silver badges82 bronze badges
answered Apr 19, 2013 at 19:43
7
  • hmm use of ajax could solve the problem. I will try this thanks for your help. Commented Apr 20, 2013 at 5:49
  • 2
    I thought null = never cache and 0 = cache permanently? Commented Apr 20, 2013 at 11:02
  • 1
    null = never cache, right. However, I'm not sure it is possible to argument value to null with <action> directive. Commented Apr 21, 2013 at 11:02
  • 2
    <action method="setCacheLifetime"><s>null</s></action> worked for me. TNX! Commented Apr 26, 2013 at 21:21
  • 6
    Setting the Cache Lifetime to "0" does not disable the cache. Only "null" will disable it! Commented Nov 14, 2013 at 14:10
11

You can disable cache in getChildHtml(). This is what the signature looks like:

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

This should do the trick:

echo $this->getChildHtml('block', false);
answered Apr 19, 2013 at 14:37
2
  • i have tried this.. actually is have coded in top.phtml this is not working in that case Commented Apr 19, 2013 at 14:49
  • That might be cached as well so I guess it wouldn't have much effect. Is there a chance you can pull it outside of that part? I don't think there are any other options... Commented Apr 19, 2013 at 14:53
9

In the particular xml file. Say catalog.xml

In that for particular reference block In that block set the action of cache limit to null

Example of 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>
answered Mar 11, 2016 at 10:54
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.