[Bijgedragen door Konstantin G.]{class="badge informative" title="Konstantin G."}

Varnish ESI-blok

Edge Side Includes (ESI) zijn speciale richtlijnen waarmee u webpagina's kunt opnemen in andere webpagina's.

Een voorbeeld:

<div>
  <esi:include src="http://domain.com/index.php/page_cache/block/esi/blocks"/>
</div>

Varnish haalt inhoud van http://domain.com/index.php/page_cache/block/esi/blocks op en vervangt de <esi> -tag hiermee.

Commerce en Varnish ESI

Het Commerce-framework maakt een ESI-tag wanneer aan de volgende voorwaarden wordt voldaan:

  • De toepassing voor het in cache plaatsen is ingesteld op Varnish Cache
  • Een XML-lay-outelement block wordt toegevoegd met een ttl -kenmerk

Voorbeeld

cms_index_index.xml:

  <referenceContainer name="content">
      <block class="Magento\Framework\View\Element\Template" template="Magento_Paypal::esi.phtml" ttl="30"/>
   </referenceContainer>

In het bovenstaande voorbeeld voegt het element block inhoud van de esi.phtml -sjabloon toe aan een homepage en werkt Varnish deze automatisch om de 30 seconden bij.

Beperkingen

Op dit moment biedt Varnish geen ondersteuning voor ESI via HTTPS, zodat het automatisch overschakelt naar HTTP.

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