모두 안녕하십니까. 정적 HTML 셸을 캐싱하고 일부 동적 HTML과 JSON 개체를 포함하기 위해 Varnish에 Edge Side Includes를 사용하고 있습니다.바니시 ESI는 인정되었지만 포함되어 있지 않음
HTML 용 ESI가 올바르게 포함되지만 JSON 객체 용 ESI는 포함되지 않습니다. 디버그 구문은 Varnish가 보는 바를 설명하지만 JSON ESI를 포함하지 않기로 결정할 수는 없습니다.
여기 로딩 구조입니다 :
pageuncached. blank page with headers to set a cookie and esi 1
esi 1cached. A bunch of static HTML, plus esi 2 and esi 3
esi 2uncached. A JSON object which is different on every page load.
esi 3uncached. Some HTML which updates with every page load.
다시
, 잘 ESI 1 및 ESI 3 작동하지만 ESI 2 포함지고 있지 않습니다.
{session_page_history_id:24231}
내가 XML처럼 보이지 않는 ESI 코드 오류가 발생 읽었, 그래서 런타임 매개 변수 esi_syntax = 0x7로을 설정 ESI 2의 내용이 바로 이것이다. 주사위는 없지만 최소한 디버그 데이터를 얻고 있습니다.
이ESI 2의 깨진 호출은 다음과 같습니다
<esi:include src="http://www.domain.com/dynamic_esi/print_variables?esi__desired_var_names[]=session_page_history_id&for_esi=1"/>
그리고 ESI 3에 대한 (작업) 호출은 다음과 같습니다
<esi:include src="http://www.domain.com/dynamic_esi/get_service_magic_html?&for_esi=1"/>
내가 언급 한 바와 같이, 니스 내가 ESI를 포함 시키려고한다는 것을 인식하는 것처럼 보이지만, 이것은 varnishlog에서 얻은 유일한 관련 디버그 메시지입니다 :
25 Debug c AddBit: 6997 <<![CDATA[
window.esi__values =
<esi:include src="http://www.domain.com/dynamic_esi/print_variables?esi__desired_var_names[]=session_page_history_id&for_esi=1"/>
;
//]]>
</script>
<link rel="stylesheet" href="http://www.
클라이언트가 본 출력에는 정상적인 모든 내용이 포함되지만 < esi> 태그는 그대로 유지됩니다. 위의 디버그 메시지에서 보는 것과 같습니다.
왜 esi 2가 파싱/포함되지 않는지 아는 사람이 있습니까? 어떤 도움 이라든지 대단히 감사 할 것입니다!