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

Varnish ESI-blok

Edge Side Includes (ESI) zijn speciale richtlijnen die u kunt gebruiken om webpagina's op te nemen in andere webpagina's.

Een voorbeeld:

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

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

Handel en Varnish ESI

Het kader van de Handel leidt tot een markering ESI wanneer de volgende voorwaarden worden voldaan:

  • De toepassing voor het in cache plaatsen is ingesteld op Varnish Cache
  • Een XML-indeling block element wordt toegevoegd met een ttl attribute

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 wordt block element voegt inhoud van toe esi.phtml de sjabloon wordt automatisch om de 30 seconden bijgewerkt naar een homepage en Varnish.

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