You can add cache control header inside your controller
* This action render random number for each request
public function execute()
$page = $this->pageFactory->create();
//We are using HTTP headers to control various page caches (varnish, fastly, built-in php cache)
Try adding this method to your block class
public function getCacheKey()
$storeId = $this->_storeManager->getStore()->getId();
$catId = $this->getCurrentCategory()->getId();
That will ensure every category gets an unique cached block instance. The point is that no 2 ...
After many hours of debugging I managed to resolve this. It turns out to be an issue with the SalesFire extension that was installed. Disabling this extension prevented the errors from occurring and allowed the site to switch caching methods.