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.

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)

7
  • hmm use of ajax could solve the problem. I will try this thanks for your help.
    – Ravi Soni
    Commented Apr 20, 2013 at 5:49
  • 2
    I thought null = never cache and 0 = cache permanently?
    – benmarks
    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!
    – ruuter
    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);
2
  • i have tried this.. actually is have coded in top.phtml this is not working in that case
    – Ravi Soni
    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>
0

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.