+1-855-380-5958

At Neklo we use the latest Technologies to create powerful yet smart applications for our clients

Your Ideas – our development. High quality, real terms, perfect prices. We do not have unsatisfied clients

Caching blocks in Magento

magento Even quite experienced developers don’t use block caching in their work with Magento. You can also meet a lot of paid Magento themes and modules where this kind of caching is not used at all. But in fact using this standard feature is not hard. This feature is part of any Magento block (inherited from Mage_Core_Block_Abstract). There is a simple example of it’s usage. For example, on the Home page we need to display a collection of products which is sorted according to certain criteria. The data on the page should be updated only once a day. We need to make changes only in two places in the code:
public function __construct()
{
  parent::__construct();
  $this->setTemplate('company/home-product-list.phtml');
  // Block caching setup
  $this->addData(array(
    'cache_lifetime'=> 86400, // (seconds) data lifetime in the cache
    'cache_tags' => array(
      Mage_Core_Model_Store::CACHE_TAG,
      Mage_Cms_Model_Block::CACHE_TAG,
      // tag (can be applied to the number of various blocks)
      // using the tag we can clear the cache of several blocks at a time
      'tag_home_product_list'
    ),
    'cache_key' => 'MY_HOME_PRODUCT_LIST',
 ));
As we see from the example data is kept in cache separately for the store ID, for access using SSL, for access without SSL, for each Package, for each theme and for logged in user and not logged users. For example, if your Magento uses two stores then the number of copies of the block in cache will be two. In case you use two different Magento themes then the number of copies of the block in cache will be four.

ATTENTION!!

Be careful with the attempt to cache the standard blocks like catalog/product_view. The thing is that these blocks are used for rendering several parts of Product Page. You should understand the following: 1) Where this block is used when page is rendering. 2) What page parts you want to be cached. Only after these steps you can determine block cache ID and Tag. If you don’t complete these 2 steps you may put in cache page parts that you did NOT plan.

Cache cleaning

Sometimes you need to clean the cache without waiting till date the cache is expired. There are 2 ways to clear cache:
// Cleaning cache data using ID Mage::app()->removeCache( ‘MY_HOME_PRODUCT_LIST’ );
// Cleaning cache data using tag Mage::app()->cleanCache( array(‘tag_home_product_list’, ‘tag2′, ‘tag3′) );

Always use the block caching where it is reasonable. Good Luck!

Anatol Kravchenko,

Lead of PHP team,

Neklo LLC

Comments "Caching blocks in Magento"

    Leave a Reply

    Your email address will not be published. Required fields are marked *