[Colaboró Konstantin G.]{class="badge informative" title="Konstantin G."} [En las instalaciones]{class="badge informative" title="Solo se aplica a los proyectos locales de Adobe Commerce."}

Configurar el bloque ESI de Barniz varnish-esi-block

NOTE
Si el proyecto de Commerce está implementado en la nube, el almacenamiento en caché de página completa usa Fastly en lugar de Varnish. Los temas de esta sección se aplican únicamente a instalaciones locales.

Edge Side Includes (ESI) son directivas especiales que puede utilizar para incluir páginas web en otras páginas web.

Un ejemplo:

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

El barniz recupera contenido de http://domain.com/index.php/page_cache/block/esi/blocks y reemplaza la etiqueta <esi> por ella.

Commerce y Varnish ESI

El marco de trabajo de Commerce crea una etiqueta ESI cuando se cumplen las siguientes condiciones:

  • La aplicación de almacenamiento en caché está establecida en Varnish Cache
  • Se agregó un elemento block de diseño XML con un atributo ttl

Ejemplo

cms_index_index.xml:

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

En el ejemplo anterior, el elemento block agrega contenido de la plantilla esi.phtml a una página principal y Varnish lo actualiza automáticamente cada 30 segundos.

Limitaciones

Actualmente, Varnish no admite ESI sobre HTTPS, por lo que cambia automáticamente a 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
commerce-operations-help-configuration