PHPホームページキャッシュ技術の利点とコードの例


デスクの静的化:ダイナミックページを解析して静的ページとして保存します。
ファイルキャッシュ:クエリ結果をファイルとして保存します。XML
メモリキャッシュ:memcache
phpバッファ:XCache、eaccelleratorなど
Memcacheは、高性能な分散型メモリオブジェクトキャッシュシステムであり、メモリ内で統一された巨大なshテーブルを維持することによって、画像、ビデオ、ファイル、データベース検索の結果など、さまざまなフォーマットのデータを記憶することができます。簡単に言えば、データをメモリに呼び出してメモリから読み取ることで、読み取り速度を大幅に向上させます。Memcacheはdangaのプロジェクトで、最初はLiveJournalサービスで、最初はLiveJournalアクセス速度を速めるために開発されました。その後、多くの大手サイトに採用されました。Memcachedは、1つまたは複数のサーバでデーモンとして動作し、クライアントの接続や操作を随時受信します。
XCacheはオープンソースのopcodeバッファ/最適化器です。これは彼があなたのサーバー上のPHPの性能を向上させることを意味します。彼はPHPをコンパイルしたデータを共有メモリにバッファすることによって、重複したコンパイルプロセスを回避します。バッファがコンパイルされたコードを直接使用してスピードを上げることができます。通常はあなたのページ生成速度を2倍から5倍まで高めて、サーバーの負荷を低減できます。
************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
1、一般キャッシュ技術:
データキャッシュ:ここでいうデータキャッシュとは、PHPキャッシュメカニズムをデータベースで調べ、ページにアクセスするたびに、該当するキャッシュデータが存在するかどうかを先に検出し、存在しない場合はデータベースに接続し、データを取得し、クエリ結果を逐次作成してファイルに保存し、以降同様のクエリー結果はそのままキャッシュテーブルまたはファイルから取得することです。
使う一番広い例はDiscuzの検索機能を見て、結果IDを一つのテーブルにキャッシュして、今度は同じキーワードを検索する時にキャッシュテーブルを検索します。
一般的な方法としては、複数のテーブルが関連している場合、付表中のコンテンツ生成配列をメインテーブルのフィールドに保存し、必要な時に配列を分解するという利点があります。このような利点は、一つのテーブルしかないということです。悪いところは二つのデータが同期して多くのステップがあります。データベースは永遠にボトルネックであり、ハードディスクで速度を変えます。これがポイントです。
2、ページキャッシュ:
ページにアクセスするたびに、該当するキャッシュページファイルが存在するかどうかを先に検出します。存在しない場合は、データベースに接続し、データを取得し、ページを表示し、同時にキャッシュページファイルを作成します。このようにして、次の訪問時にはページファイルが機能します。テンプレートエンジンとネットでよく見られるPHPキャッシュメカニズム類には、通常この機能があります。
3、タイムトリガーキャッシュ:
ファイルが存在しているかどうかを確認し、タイムスタンプが設定された期限切れより小さい場合、ファイルの修正されたタイムスタンプが現在のタイムスタンプから期限切れタイムスタンプを引いた時より大きい場合、キャッシュを使用します。そうでなければキャッシュを更新します。
4、コンテンツトリガキャッシュ:
データを挿入したり、データを更新したりすると、PHPキャッシュ機構を強制的に更新します。
5、スタティックキャッシュ:
ここでいう静的キャッシュとは、静的にしてHTMLやXMLなどのテキストファイルを直接生成し、更新したときにもう一度生成し、あまり変化しないページに適合するということです。
以上の内容はコードレベルの解決案です。直接CPの他のフレームも変えたくないです。内容は大体同じです。簡単にできます。いくつかの方法を一緒に使いますが、下の内容はサーバー側のキャッシュプランです。コードレベルではないので、いろいろな協力が必要です。
6、メモリキャッシュ:
Memcachedは高性能で、分散型のメモリオブジェクトPHPキャッシュメカニズムシステムで、ダイナミックアプリケーションでデータベース負荷を低減し、アクセス速度を向上させます。
7、phpのバッファ:
eaccellerator、app、phpa、xcacheがあります。これは言わないでください。山のように検索してください。自分で見てください。これがあればOKです。
8、MYSQLキャッシュ:
これもコードレベルではないです。クラシックなデータベースはこのような方式を使っています。以下の運行時間を見て、0.09 xxxなどです。
9、逆エージェントに基づくWebキャッシュ:
Ngix、SQUID、mod_proxy(apache 2以上はmod_に分類されます。proxyとmod_cache
10、DNSポーリング:
BINDはオープンソースのDNSサーバーのソフトウェアです。これは言ってみれば大きいです。自分で検索します。これがあると分かります。
知っているのはchinaacheなどの大きい駅です。簡単に言えばマルチサーバーです。同じページやファイルを別のサーバーにキャッシュして、南北によって自動的に関連サーバーに解析します。
PHPホームページキャッシュの例
  • ob_start():ページキャッシュ開始のフラグ、この関数の内容はob_までです。end_flush()またはob_end_clean()はすべてページキャッシュに保存されます。
  • ob_ゲットするcontensts():ページのキャッシュの内容を取得して、取得したら、私達はどのようにこれらの内容を処理してもいいです。フィルタリングフィールド、内容に合わせてもいいです。
  • ob_end_flush():ページキャッシュが終了したことを表します。そして私が検証した結果、キャッシュの内容は現在のページに出力されます。つまりキャッシュの内容を表示することができます。
  • この三つのphp関数を使えば、強力な機能を実現できます。データベースの検索量が大きいなら、cacheでこの問題を解決できます。
    まず、有効期限を設定し、キャッシュファイルを要求すれば、2時間で期限が切れます。タイムは3600*2ですキャッシュファイルの作成時間(またはfilemtime()をfilectime()で取得し、現在の時間とファイルの作成時間が制限された期限を超えたら、上の3つの関数を通じて、まずデータベースからデータを取り出してから、Obcuuをキャッシュすることができます。start()を作成したいページのhtmlコードをキャッシュに記入し、キャッシュが終了したらob_を通過します。ゲットするcontensts()はキャッシュされた内容を取得し、fwriteを通じてキャッシュ内容を静的ページに書き込む)。
    もし期限が切れていないなら、直接cacheの中の静的なページを読めばいいです。大量のデータベースアクセスを避けました。
    
    <?php
    $_time =10;
    $dir="D:\\php\\";
     
    function cache_start($_time, $dir)
    {
     $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
     $cachetime = $_time;
     ob_start();
     if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
     {
      include($cachefile);
      ob_end_flush();
      exit;
     }
    }
     
    function cache_end($dir)
    {
     $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
     $fp = fopen($cachefile, 'w');
     fwrite($fp, ob_get_contents());
     fclose($fp);
     ob_end_flush();
    }
     
    cache_start($_time, $dir);
    //        ,  cache_start cache_end      
    for ($i=0;$i<5;$i++)
    {
     echo $i;
     sleep(1);
    }
    cache_end($dir);
    ?>
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。