![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-page-cache/Model/App/FrontController/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\PageCache\Model\App\FrontController; use Magento\Framework\App\Response\Http as ResponseHttp; /** * Plugin for processing builtin cache */ class BuiltinPlugin { /** * @var \Magento\Framework\App\Config\ScopeConfigInterface */ protected $config; /** * @var \Magento\Framework\App\PageCache\Version */ protected $version; /** * @var \Magento\Framework\App\PageCache\Kernel */ protected $kernel; /** * @var \Magento\Framework\App\State */ protected $state; /** * Constructor * * @param \Magento\PageCache\Model\Config $config * @param \Magento\Framework\App\PageCache\Version $version * @param \Magento\Framework\App\PageCache\Kernel $kernel * @param \Magento\Framework\App\State $state */ public function __construct( \Magento\PageCache\Model\Config $config, \Magento\Framework\App\PageCache\Version $version, \Magento\Framework\App\PageCache\Kernel $kernel, \Magento\Framework\App\State $state ) { $this->config = $config; $this->version = $version; $this->kernel = $kernel; $this->state = $state; } /** * Add PageCache functionality to Dispatch method * * @param \Magento\Framework\App\FrontControllerInterface $subject * @param callable $proceed * @param \Magento\Framework\App\RequestInterface $request * @return \Magento\Framework\Controller\ResultInterface|\Magento\Framework\App\Response\Http * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function aroundDispatch( \Magento\Framework\App\FrontControllerInterface $subject, \Closure $proceed, \Magento\Framework\App\RequestInterface $request ) { $this->version->process(); if (!$this->config->isEnabled() || $this->config->getType() !== \Magento\PageCache\Model\Config::BUILT_IN) { return $proceed($request); } $result = $this->kernel->load(); if ($result === false) { $result = $proceed($request); if ($result instanceof ResponseHttp) { $this->addDebugHeaders($result); $this->kernel->process($result); } } else { $this->addDebugHeader($result, 'X-Magento-Cache-Debug', 'HIT', true); } return $result; } /** * Set cache control * * @param ResponseHttp $result * @return ResponseHttp */ protected function addDebugHeaders(ResponseHttp $result) { $cacheControlHeader = $result->getHeader('Cache-Control'); if ($cacheControlHeader instanceof \Laminas\Http\Header\HeaderInterface) { $this->addDebugHeader($result, 'X-Magento-Cache-Control', $cacheControlHeader->getFieldValue()); } $this->addDebugHeader($result, 'X-Magento-Cache-Debug', 'MISS', true); return $result; } /** * Add additional header for debug purpose * * @param ResponseHttp $response * @param string $name * @param string $value * @param bool $replace * @return void */ protected function addDebugHeader(ResponseHttp $response, $name, $value, $replace = false) { if ($this->state->getMode() == \Magento\Framework\App\State::MODE_DEVELOPER) { $response->setHeader($name, $value, $replace); } } }