/** * Call method around dispatch frontend action * * @param FrontControllerInterface $subject * @param \Closure $proceed * @param RequestInterface $request * @return $this * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @SuppressWarnings(PHPMD) */ public function aroundDispatch(FrontControllerInterface $subject, \Closure $proceed, RequestInterface $request) { $startTime = microtime(true); if (isset($_SERVER['REQUEST_TIME_FLOAT'])) { $startTime = $_SERVER['REQUEST_TIME_FLOAT']; } /** @var \Magento\Framework\App\Request\Http $request */ if (strpos($request->getOriginalPathInfo(), 'searchautocomplete/ajax/suggest') !== false) { $this->result->init(); $proceed($request); #require for init translations $request->setControllerModule('Magento_CatalogSearch'); $request->setDispatched(true); $identifier = 'QUERY_' . $this->storeManager->getStore()->getId() . '_' . md5($request->getParam('q')); if ($result = $this->cache->load($identifier)) { $result = \Zend_Json::decode($result); $result['time'] = round(microtime(true) - $startTime, 4); $result['cache'] = true; $data = \Zend_Json::encode($result); } else { // mirasvit core event $this->eventManager->dispatch('core_register_urlrewrite'); $result = $this->result->toArray(); $result['success'] = true; $result['time'] = round(microtime(true) - $startTime, 4); $result['cache'] = false; $data = \Zend_Json::encode($result); $this->cache->save($data, $identifier, [\Magento\PageCache\Model\Cache\Type::CACHE_TAG]); } $this->response->setPublicHeaders(3600); return $this->response->representJson($data); } else { return $proceed($request); } }
/** * {@inheritdoc} */ public function setPublicHeaders($ttl) { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setPublicHeaders'); if (!$pluginInfo) { return parent::setPublicHeaders($ttl); } else { return $this->___callPlugins('setPublicHeaders', func_get_args(), $pluginInfo); } }
/** * Test for setting public headers without time to live parameter */ public function testSetPublicHeadersWithoutTtl() { $this->setExpectedException('InvalidArgumentException', 'Time to live is a mandatory parameter for set public headers'); $this->model->setPublicHeaders(null); }