[콘스탄틴 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