출력 버퍼링은 PHP가 제공하는 메커니즘으로 스크립트가 브라우저로 직접 보내지 않고 버퍼에 출력을 일시적으로 저장할 수 있습니다. 즉, 스크립트가 실행되기 전에 서버가 모든 출력을 캐시하고 스크립트가 실행 된 후 한 번에 모든 내용을 출력 할 수 있습니다. 이 작업의 이점은 다음과 같습니다.
HTTP 요청 수를 줄이기 : 브라우저는 여러 HTTP 요청의 지연을 피하며 모든 데이터를 한 번에 수신합니다.
I/O 작동 감소 : PHP는 출력 수를 줄임으로써 클라이언트와의 통신 빈도를 줄여 I/O 운영을 줄이고 성능을 향상시킬 수 있습니다.
개선 된 페이지 렌더링 : 브라우저는 데이터 전송 중 중단으로 인해 페이지 깜박임을 피하기 위해 전체 HTML 컨텐츠를 수신 한 후 한 번에 페이지를 렌더링 할 수 있습니다.
OB_END_FLUSH 는 PHP의 출력 버퍼 관련 기능입니다. 그 목적은 전류 버퍼를 닫고 버퍼의 내용을 브라우저에 출력하는 것입니다. 올바른 위치에서 OB_END_FLUSH를 호출하면 버퍼의 내용이 브라우저로 전송 될 때 제어 할 수 있으므로 페이지의로드 속도를 최적화합니다.
OB_END_FLUSH 의 사용을 이해하려면 먼저 PHP의 버퍼 관리 메커니즘을 이해해야합니다. PHP 출력 버퍼링의 워크 플로우는 일반적으로 다음과 같습니다.
출력 버퍼를 시작하십시오 : OB_START ()를 호출하여 출력 버퍼를 시작하십시오.
컨텐츠 생성 : 스크립트가 계속 실행되고 브라우저로 직접 전송되지 않고 모든 출력이 버퍼에 먼저 캐시됩니다.
완전한 출력 : 모든 컨텐츠가 생성되면 버퍼를 닫고 버퍼의 내용을 브라우저로 출력하는 OB_END_FLUSH ()를 호출하십시오.
간단한 예제 코드는 다음과 같습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 출력 버퍼링을 시작하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-comment">// 출력 내용(내용은 버퍼에 있습니다,직접 출력하는 대신)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"페이지 콘텐츠가 생성되고 있습니다..."</span></span><span>;
</span><span><span class="hljs-comment">// 다른 처리는 여기에서 수행 할 수 있습니다,예를 들어, 데이터베이스 쿼리、이미지 처리 등</span></span><span>
</span><span><span class="hljs-comment">// 출력 버퍼링을 끄고 모든 것을 출력하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>이 예에서는 OB_START ()가 출력 버퍼링을 시작하고 ECHO 출력의 모든 내용이 일시적으로 버퍼에 저장됩니다. ob_end_flush ()가 호출 될 때까지 버퍼의 모든 내용은 한 번에 브라우저에 출력됩니다.
출력 버퍼링을 합리적으로 사용하면 OB_END_FLUSH는 다음 측면에서 페이지로드 속도를 최적화 할 수 있습니다.
페이지의 컨텐츠 생성 프로세스가 오랜 시간이 걸리면 (예 : 많은 수의 데이터베이스 쿼리, 복잡한 계산 또는 외부 API를 호출하는 경우) 출력 버퍼링을 사용하면 콘텐츠가 완전히 생성되기 전에 브라우저가 페이지를 렌더링하기 시작하지 못하게 할 수 있습니다. 이렇게하면 페이지가로드 될 때 불필요한 페이지가 깜박 거리는 또는 중단이 없어서 사용자 경험이 향상됩니다.
출력 버퍼링 메커니즘은 브라우저에 대한 중간 I/O 요청을 줄입니다. 브라우저는 각 부품의 출력을 기다릴 필요가 없지만 모든 것이 완료 될 때까지 기다립니다. 이는 특히 페이지 컨텐츠가 더 복잡 할 때 페이지의 로딩 효율을 향상시키는 데 도움이됩니다.
OB_END_FLUSH는 다른 성능 최적화 기술과 함께 사용할 수도 있습니다. 예를 들어, 전송 된 데이터의 크기를 추가로 줄이기 위해 OB_GZHANDLER 와 함께 GZIP 압축을 활성화 할 수 있습니다. 이것은 로딩 속도를 최적화 할뿐만 아니라 대역폭 소비를 줄입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 할 수 있게 하다 GZIP 压缩并출력 버퍼링을 시작하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">'ob_gzhandler'</span></span><span>);
</span><span><span class="hljs-comment">// 출력 내용</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"압축 페이지 내용..."</span></span><span>;
</span><span><span class="hljs-comment">// 출력을 완료하십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>동적으로 생성 된 웹 페이지의 경우 컨텐츠가 출력되는 시점을 제어하여 클라이언트와의 상호 작용 수를 줄이고 서버의 응답 효율을 향상시킬 수 있습니다. 특히 많은 수의 사용자 요청을 처리 할 때 합리적인 버퍼링 메커니즘은 서버의 부담을 효과적으로 줄이고 처리 속도를 향상시킬 수 있습니다.
OB_END_FLUSH 및 PHP 출력 버퍼링 메커니즘을 합리적으로 사용하여 개발자는 페이지 로딩 속도를 크게 향상시키고 웹 사이트 성능을 향상시킬 수 있습니다. 출력 버퍼링은 페이지 렌더링 대기 시간을 줄이는 데 도움이 될뿐만 아니라 I/O 운영을 줄이고 데이터 전송을 최적화하여 사용자 경험을 더욱 향상시킵니다. 다른 성능 최적화 방법과 결합하면 OB_END_FLUSH는 보다 중요한 결과를 가져오고 개발자가보다 효율적이고 반응이 좋은 웹 사이트를 만들도록 도와줍니다.