/** * Prepare response body before caching * * @param Zend_Controller_Response_Http $response * @return string */ public function prepareContent(Zend_Controller_Response_Http $response) { $cacheInstance = Ves_Optimize_Model_Cache::getCacheInstance(); /** @var Ves_Optimize_Model_Processor */ $processor = Mage::getSingleton('ves_optimize/processor'); $countLimit = Mage::getStoreConfig(Mage_Reports_Block_Product_Viewed::XML_PATH_RECENTLY_VIEWED_COUNT); // save recently viewed product count limit $cacheId = $processor->getRecentlyViewedCountCacheId(); if (!$cacheInstance->getFrontend()->test($cacheId)) { $cacheInstance->save($countLimit, $cacheId, array(Ves_Optimize_Model_Processor::CACHE_TAG)); } // save current product id $product = Mage::registry('current_product'); if ($product) { $cacheId = $processor->getRequestCacheId() . '_current_product_id'; $cacheInstance->save($product->getId(), $cacheId, array(Ves_Optimize_Model_Processor::CACHE_TAG)); $processor->setMetadata(self::METADATA_PRODUCT_ID, $product->getId()); Ves_Optimize_Model_Cookie::registerViewedProducts($product->getId(), $countLimit); } return parent::prepareContent($response); }
/** * Check if request can be cached * @param Zend_Controller_Request_Http $request * @return bool */ public function allowCache(Zend_Controller_Request_Http $request) { $res = parent::allowCache($request); if ($res) { $params = $this->_getSessionParams(); $queryParams = $request->getQuery(); $queryParams = array_merge($queryParams, $params); $maxDepth = Mage::getStoreConfig(Ves_Optimize_Model_Processor::XML_PATH_ALLOWED_DEPTH); $res = count($queryParams) <= $maxDepth; } return $res; }