[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 Attribut ttl 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