Many times we need to clear cache programmatically or using an external script, Using below code snippet we can clear of flush cache programmatically,
<?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,
$allTypes = array_keys($this->_cacheTypeList->getTypes());
Result like below type of all cache,
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,
foreach ($this->_cacheFrontendPool as $cacheFrontend) { $cacheFrontend->getBackend()->clean(); }