ホームページ  >  記事  >  バックエンド開発  >  PHP が ob キャッシュ メカニズムを使用してページの静的ソリューションを実装する方法を分析する

PHP が ob キャッシュ メカニズムを使用してページの静的ソリューションを実装する方法を分析する

巴扎黑
巴扎黑オリジナル
2017-07-21 14:23:251415ブラウズ

PHPの実行ページをあらかじめHTMLに変換しておくというのは、いわゆるPHPの静的手法の一つです。

その他の方法には、テンプレート置換方法、opcache などの方法があります。

静的化の役割:

Web サイトの応答速度を向上させ、サーバーの負荷を軽減します。
検索エンジンの SEO のために、
PHP を使用してバッファーを出力し、HTML に直接書き込み、Web サイトを定期的にスキャンします。これは、静的実装が比較的簡単な Web ページです。

静的化前:

for($i=0;$i<1000;$i++){

echo "bull
";

}

?>

静的:

ob_start();

for($i=0;$i<1000;$i++){

echo "bull
";

}

$str = ob_get_contents();

ob_end_clean();

$fp = fopen("test.html","w");

fwrite($fp,$str);

fclose( $fp );

echo "

success write
";

?>

率直に言うと、実際にはスペースを使用しています。時間と引き換えに、ニュースサイトのように、基本的に公開内容は一度書いた後は変わらないので、静的にHTMLに変換する方が適しています。

ユーザーがアクセスするときは、この HTML ページに誘導するだけです。




まず、php

のobキャッシュでよく使われるいくつかの一般的な関数を紹介します。

ob_start(): オンにするキャッシュメカニズム

ob_get_contents(): ob キャッシュのコンテンツを取得します

ob_clean() ob キャッシュのコンテンツをクリアしますが、キャッシュは閉じません

ob_end_clean() ob キャッシュのコンテンツをクリアして、キャッシュ

ob_flushはキャッシュをクリアしてコンテンツを出力しますが、キャッシュは閉じません

ob_end_flushはキャッシュをクリアし、コンテンツを出力し、キャッシュを閉じます

flushは出力キャッシュ内のコンテンツを強制的に更新します

によるとhttpプロトコルの規定により、レスポンスヘッダより前にレスポンス内容を出力できないため、header()関数の前に出力内容があるとエラーとなりますが、ob_start()使用後はレスポンスが返されます。コンテンツは最初に ob キャッシュに配置され、メッセージ ヘッダーが送信される前には送信されません。これにより、header() エラーの問題が解決されます。

PHP 独自の ob キャッシュ メカニズムを使用してページの静的化を実現する方法について話しましょう

Code School php

 1 <?php 2     3     $id=$_REQUEST[&#39;id&#39;]; 4       5     //判断缓存文件是否存在,如果存在,直接输出 6     if(file_exists(&#39;content&#39;.$id.&#39;.html&#39;)){ 7       echo file_get_contents(&#39;content&#39;.$id.&#39;.html&#39;); 8       return; 9     }10      11     //开启缓存机制12     ob_start();13      14     //到数据库中查询所需要的内容15     $conn=mysql_connect("localhost","root","root");16     mysql_select(&#39;db&#39;);17     mysql_query(&#39;set names utf8&#39;);18      19     $sql="select content from table_name where id=$id";20     $res=mysql_query($sql);21     $row=mysql_fetch_assoc($res);22     $content=$row[0];23      24     mysql_free_result($res);25     mysql_close($conn);26     echo $content;27     //将输出的内容保存到文件中,形成静态页面,在下次访问的时候,直接读取输出28     file_put_contents(&#39;content&#39;.$id.&#39;.html&#39;,ob_get_contents());29  30  31 ?>

上記のコードに示すように:

クエリしたコンテンツを直接送信します 保存しますファイルが存在する場合は出力し、ファイルの有効期限を設定したい場合はデータベースにアクセスして実行します。キャッシュされたファイルの有効期限が切れているかどうかを判断するためのステートメント、time() - 設定された有効期限

以上がPHP が ob キャッシュ メカニズムを使用してページの静的ソリューションを実装する方法を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。