[Beitrag von Konstantin G.]{class="badge informative" title="Konstantin G."}
Varnischer ESI-Block
Edge Side Includes (ESI) sind spezielle Anweisungen, mit denen Sie Webseiten in andere Webseiten einbinden können.
Beispiel:
<div>
<esi:include src="http://domain.com/index.php/page_cache/block/esi/blocks"/>
</div>
Varnish ruft Inhalt von http://domain.com/index.php/page_cache/block/esi/blocks
ab und ersetzt das Tag <esi>
durch es.
Commerce und Varnisches ESI
Das Commerce-Framework erstellt ein ESI-Tag, wenn die folgenden Bedingungen erfüllt sind:
- Die Caching-Anwendung ist auf
Varnish Cache
eingestellt - Ein XML-Layout-Element
block
wird mit dem Attributttl
hinzugefügt
Beispiel
cms_index_index.xml
:
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" template="Magento_Paypal::esi.phtml" ttl="30"/>
</referenceContainer>
Im obigen Beispiel fügt das Element block
Inhalte aus der Vorlage esi.phtml
einer Homepage hinzu und Varnish aktualisiert sie automatisch alle 30 Sekunden.
Einschränkungen
Derzeit unterstützt Varnish ESI nicht über HTTPS, sodass es automatisch zu HTTP wechselt.
Magento\PageCache\Observer\ProcessLayoutRenderElement
:
private function _wrapEsi(
\Magento\Framework\View\Element\AbstractBlock $block,
\Magento\Framework\View\Layout $layout
) {
....
// Varnish does not support ESI over HTTPS must change to HTTP
$url = substr($url, 0, 5) === 'https' ? 'http' . substr($url, 5) : $url;
return sprintf('<esi:include src="%s" />', $url);
}
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c