[Contributo di Konstantin G.]{class="badge informative" title="Konstantin G."} [On-Premises]{class="badge informative" title="Applicabile solo ai progetti locali di Adobe Commerce."}

Configurare il blocco ESI di vernice varnish-esi-block

NOTE
Se il progetto Commerce è distribuito sul cloud, la memorizzazione nella cache di pagine intere utilizza Fastly invece di Varnish. Gli argomenti trattati in questa sezione si applicano solo alle installazioni locali.

Le Inclusioni lato Edge (ESI) sono direttive speciali che è possibile utilizzare per includere pagine web in altre pagine web.

Ecco un esempio:

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

La vernice recupera il contenuto da http://domain.com/index.php/page_cache/block/esi/blocks e sostituisce con esso il tag <esi>.

Commerce e vernice ESI

Il framework Commerce crea un tag ESI quando vengono soddisfatte le seguenti condizioni:

  • Applicazione di caching impostata su Varnish Cache
  • Elemento block del layout XML aggiunto con un attributo ttl

Esempio

cms_index_index.xml:

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

Nell’esempio precedente, l’elemento block aggiunge contenuto dal modello esi.phtml a una home page e Varnish lo aggiorna automaticamente ogni 30 secondi.

Limitazioni

Attualmente, Varnish non supporta ESI su HTTPS, quindi passa automaticamente 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