Many times we need to clear cache programmatically or using an external script, Using below code snippet we can clear of flush cache programmatically,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php namespace Rbj\Cache\Block; class CacheClear extends \Magento\Framework\View\Element\Template { public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool, \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList, array $data = [] ) { $this->_cacheFrontendPool = $cacheFrontendPool; $this->_cacheTypeList = $cacheTypeList; parent::__construct($context, $data); } /* Using Product id */ public function cacheClear() { /* get all types of cache in system */ $allTypes = array_keys($this->_cacheTypeList->getTypes()); /* Clean cached data for specific cache type */ foreach ($allTypes as $type) { $this->_cacheTypeList->cleanType($type); } /* flushed the Entire cache storage from system, Works like Flush Cache Storage button click on System -> Cache Management */ foreach ($this->_cacheFrontendPool as $cacheFrontend) { $cacheFrontend->getBackend()->clean(); } } } |
Call function like below,
$productStockById = $block->cacheClear();
Get the list of all cache type by just below way,
1 | $allTypes = array_keys($this->_cacheTypeList->getTypes()); |
Result like below type of all cache,
1 2 3 | List of cache types: array('config','layout','block_html','collections','reflection','db_ddl', 'eav', 'customer_notification','config_integration','config_integration_api','full_page', 'translate', 'config_webservice'); |
If you want to flushAll cache, Use below methods,
1 2 3 | foreach ($this->_cacheFrontendPool as $cacheFrontend) { $cacheFrontend->getBackend()->clean(); } |