[Contribution de Konstantin G.]{class="badge informative" title="Constantin G."}

Bloc ESI en pointillé

Edge Side Includes (ESI) sont des directives spéciales que vous pouvez utiliser pour inclure des pages web dans d’autres pages web.

Exemple :

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

Le vernis récupère le contenu de http://domain.com/index.php/page_cache/block/esi/blocks et remplace la balise <esi> par celle-ci.

Commerce et ESI vernal

La structure Commerce crée une balise ESI lorsque les conditions suivantes sont remplies :

  • L’application de mise en cache est définie sur Varnish Cache
  • Un élément block de disposition XML est ajouté avec un attribut ttl

Exemple

cms_index_index.xml :

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

Dans l’exemple ci-dessus, l’élément block ajoute du contenu du modèle esi.phtml à une page d’accueil et le vernis le met automatiquement à jour toutes les 30 secondes.

Limites

Actuellement, Varnish ne prend pas en charge l’ESI par HTTPS et passe donc automatiquement au 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