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();
}