[콘스탄틴 G 기여.]{class="badge informative" title="콘스탄틴"}

바니시 ESI 차단

ESI(Edge Side Includes)는 다른 웹 페이지에 웹 페이지를 포함하는 데 사용할 수 있는 특수 지시문입니다.

예:

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

바니시는 http://domain.com/index.php/page_cache/block/esi/blocks의 콘텐츠를 가져와서 <esi> 태그를 이 태그로 바꿉니다.

Commerce 및 바니시 ESI

Commerce 프레임워크는 다음 조건이 충족되면 ESI 태그를 생성합니다.

  • 캐싱 응용 프로그램이 Varnish Cache(으)로 설정되어 있습니다.
  • XML 레이아웃 block 요소가 ttl 특성과 함께 추가되었습니다.

cms_index_index.xml:

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

위의 예에서 block 요소는 esi.phtml 템플릿의 콘텐츠를 홈 페이지에 추가하고 Vannish는 30초마다 자동으로 업데이트합니다.

제한 사항

현재 Varnish 는 HTTPS에서 ESI를 지원하지 않으므로 자동으로 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