>백엔드 개발 >PHP 튜토리얼 >Ob 시리즈 기능을 기반으로 정적 PHP 웹사이트 페이지 구현

Ob 시리즈 기능을 기반으로 정적 PHP 웹사이트 페이지 구현

coldplay.xixi
coldplay.xixi앞으로
2020-07-14 17:21:322309검색

Ob 시리즈 기능을 기반으로 정적 PHP 웹사이트 페이지 구현

PHP 실행 페이지를 미리 HTML로 변환하는 것이 소위 PHP 정적 방법 중 하나입니다.

다른 방법으로는 템플릿 교체 방법, opcache 및 기타 방법이 있습니다.

정적화의 역할:

웹사이트의 응답 속도를 향상시키고 서버 부하를 줄입니다.
검색 엔진의 SEO를 위해
PHP를 사용하여 버퍼를 출력하고 HTML로 직접 작성하고 웹사이트를 정기적으로 스캔합니다. Static을 구현하기 비교적 쉬운 웹 페이지인 백그라운드에서.

정적화 전:

<?php
for($i=0;$i<1000;$i++){
 echo "bull<br>";
}
?>

정적화:

<?php
ob_start();
for($i=0;$i<1000;$i++){
 echo "bull<br>";
}
$str = ob_get_contents();
ob_end_clean();
$fp = fopen("test.html","w");
fwrite($fp,$str);
fclose($fp);
echo "<p>success write</p>";
?>

이 코드는 test.html을 수행합니다. 직설적으로 말하면, 실제로는 뉴스 웹사이트처럼 게시된 콘텐츠가 변경됩니다. 정적으로 html로 변환하는 것이 더 적합합니다.

사용자가 방문하면 이 HTML 페이지로 이동하기만 하면 됩니다.

간단히 Apache 벤치마크를 사용하여 효과를 테스트하세요.

ab.exe -n1000 -c10

연결의 90% 이상에서 둘 사이의 차이는 최소 150ms입니다. 복잡한 PHP와 비교할 때 html은 여전히 ​​많은 계산을 절약합니다.

관련 기능 소개

1. Flush: 버퍼 내용과 출력 내용을 새로 고칩니다. Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!

7、ob_implicit_flush함수 형식: 플러시()
설명: 이 함수는 자주 사용되며 매우 효율적입니다.

2. ob_start : 출력 버퍼 열기
함수 형식: void ob_start(void)

설명: 버퍼가 활성화되면 PHP 프로그램의 파일이 아닌 모든 헤더 정보가 전송되지 않습니다. 내부 버퍼에 저장됩니다. 버퍼의 내용을 출력하려면 ob_end_flush() 또는 플러시()를 사용하여 버퍼의 내용을 출력할 수 있습니다. 3, ob_get_contents : 내부 버퍼의 내용을 반환합니다.

사용법: 문자열 ob_get_contents(void)
설명: 이 함수는 현재 버퍼의 내용을 반환합니다. 출력 버퍼가 활성화되지 않은 경우 FALSE를 반환합니다. 🎜🎜4. ob_get_length: 내부 버퍼의 길이를 반환합니다. 🎜사용법: int ob_get_length(void)🎜설명: 이 함수는 출력 버퍼가 활성화되지 않은 경우 ob_get_contents와 동일하게 현재 버퍼의 길이를 반환합니다. 그런 다음 FALSE를 반환합니다. 🎜🎜5. ob_end_flush: 내부 버퍼의 내용을 브라우저로 보내고 출력 버퍼를 닫습니다. 🎜사용법: void ob_end_flush(void)🎜설명: 이 함수는 출력 버퍼(있는 경우)의 내용을 보냅니다. 🎜🎜6. ob_end_clean: 내부 버퍼의 내용을 삭제하고 내부 버퍼를 닫습니다. 사용 방법: void ob_end_clean(void). 참고: 이 함수는 내부 버퍼의 내용을 출력하지 않습니다. 삭제하세요! 🎜🎜7. ob_implicit_flush: 절대 새로 고침을 켜거나 끕니다. 🎜사용법: void ob_implicit_flush ([int flag])🎜참고: Perl을 사용해 본 사람이라면 누구나 $|=x의 의미를 알 것입니다. 버퍼는 켜거나 끌 수 있으며, ob_implicit_flush 함수는 그것과 동일합니다. 기본값은 버퍼를 끄는 것입니다. 절대 출력을 켠 후에는 각 스크립트 출력이 브라우저로 직접 전송되며 더 이상 flash()가 수행되지 않습니다. 필요합니다. 🎜🎜🎜관련 학습 권장 사항: 🎜초보부터 마스터까지 PHP 프로그래밍🎜🎜🎜

위 내용은 Ob 시리즈 기능을 기반으로 정적 PHP 웹사이트 페이지 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제