당신은 바니시의 반응 버퍼링으로 혼란스러워하고 있다고 생각합니다. 가장 빠른 백엔드가 주어진 요청에 대해 100k 페이지로 응답 할 수 있다고 가정 할 때 매초마다 10k를 보내는 10 초입니다. 스택에 바니시가 없으면 클라이언트 연결은 백엔드로 직접 터널링되고 브라우저는 1 초 안에 데이터를 수신하기 시작합니다 (첫 번째 10k, 구문 분석, 렌더링, <link>
태그 따르기 등).
스택에 바니시가있는 경우 첫 번째 바이트를 클라이언트에 보내기 전에 백 엔드가 전체 페이지를 보낼 때까지 기다립니다. 따라서 클라이언트는 페이지 렌더링을 시작할 수있을 때까지 10 초를 기다린 후 <link>
태그 등을 따라야합니다. 믿거 나 말거나, 이것은 두 가지 주된 이유 때문에 좋습니다. 하나는 응답이 캐시 가능하면 다음 클라이언트는 백엔드가 응답을 생성 할 때까지 10 초를 기다릴 필요가 없으므로 바니시는 매우 빨리 처리합니다 (ms, s가 아님). 적중률이 높은 경우 (최적화해야하는 경우) 응답의 첫 번째 바이트를 기다리는 데 드는 초기 비용은 향후 캐시 히트에 많은 배당금을 지불합니다.두 번째, 반점이있는 셀 신호를 사용하는 휴대 전화가 동일한 100k 페이지를 요청한다고 가정 해 봅시다. 그러나 백엔드가 생성 할 수있는만큼 빨리 페이지를 다운로드 할 수는 없으며 100k 페이지를 수신하려면 1 분이 필요합니다. 제자리에 바니시가 있으면 클라이언트가 천천히 데이터를 클라이언트로 전송하는 동안 아파치가 연결과 스레드를 낭비 할 필요가 없습니다. 가능한 한 빨리 데이터를 보내고 바니시가 데이터를 클라이언트에 천천히 보내는 동안 다음 요청으로 이동합니다.
캐시 할 수없는 것으로 알려진 요청의 경우, VCL을 통해 원하는 경우, 응답 버퍼링을 초래하지 않는 return (pipe)
으로 바니시를 구성 할 수 있습니다. 데이터를 수신하자마자 백엔드에서 클라이언트로 직접 데이터를 보냅니다. 그러나 default.vcl 파이프는 사용되지 않습니다.