28 private $isVarnishEnabled;
35 private $isFullPageCacheEnabled;
40 private $entitySpecificHandlesList;
45 private $base64jsonSerializer;
50 private $jsonSerializer;
63 Json $jsonSerializer =
null,
67 $this->entitySpecificHandlesList = $entitySpecificHandlesList
69 $this->jsonSerializer = $jsonSerializer
71 $this->base64jsonSerializer = $base64jsonSerializer
82 private function _wrapEsi(
84 \
Magento\Framework\View\Layout $layout
86 $handles = $layout->getUpdate()->getHandles();
87 $pageSpecificHandles = $this->entitySpecificHandlesList->getHandles();
89 'page_cache/block/esi',
91 'blocks' => $this->jsonSerializer->serialize([
$block->getNameInLayout()]),
92 'handles' => $this->base64jsonSerializer->serialize(
93 array_values(array_diff($handles, $pageSpecificHandles))
99 return sprintf(
'<esi:include src="%s" />',
$url);
107 private function isFullPageCacheEnabled()
109 if ($this->isFullPageCacheEnabled ===
null) {
110 $this->isFullPageCacheEnabled = $this->_config->isEnabled();
112 return $this->isFullPageCacheEnabled;
120 private function isVarnishEnabled()
122 if ($this->isVarnishEnabled ===
null) {
125 return $this->isVarnishEnabled;
139 $layout = $event->getLayout();
140 if ($this->isFullPageCacheEnabled() && $layout->isCacheable()) {
141 $name = $event->getElementName();
144 $transport = $event->getTransport();
145 if (
$block instanceof \
Magento\Framework\View\Element\AbstractBlock) {
146 $blockTtl =
$block->getTtl();
147 $output = $transport->getData(
'output');
148 if (isset($blockTtl) && $this->isVarnishEnabled()) {
152 '<!-- BLOCK %1$s -->%2$s<!-- /BLOCK %1$s -->',
153 $block->getNameInLayout(),
157 $transport->setData(
'output',
$output);
elseif(isset( $params[ 'redirect_parent']))
execute(Observer $observer)
__construct(\Magento\PageCache\Model\Config $config, EntitySpecificHandlesList $entitySpecificHandlesList=null, Json $jsonSerializer=null, Base64Json $base64jsonSerializer=null)
if(!isset($_GET['name'])) $name