データ キャッシュは、Web 開発で一般的に使用されるパフォーマンス最適化方法です。現在、ファイル キャッシュとデータベース キャッシュには 2 つの主な形式があります。データベース キャッシュは不可能ではなく、確かに非常に優れており重要です。従来のデータベースは主にビジネス層やモジュール設計などから検討されているのに対し、キャッシュデータベースは主によく使われる複数テーブルのクエリをキャッシュするために実装層から設計されていると思います。ここで重要なのはファイルのキャッシュです。インターネット上には多くの情報があります。ここではいくつかの基本的な情報を転載します。
キャッシュは、「時間のためのスペース」戦略の典型的なアプリケーション モードであり、システムのパフォーマンスを向上させる重要な方法です。キャッシュを使用すると、アクセス量が多い場合にデータベース操作の数が大幅に削減され、システムの負荷が大幅に軽減され、システムのパフォーマンスが向上します。ページ キャッシュと比較して、結果セットはフォーマット情報を含まない一種の「生データ」であり、データ量が比較的少なく、再フォーマットできるため、非常に柔軟です。 PHP は「コンパイルと実行を同時に行う」スクリプト言語であるため、結果セットのキャッシュをある程度まで使用する非常に便利な方法も提供します。つまり、対応するデータ定義コード セグメントを動的に含めることによってキャッシュを使用します。 「RamDisk」上にキャッシュを構築すればさらに効率が上がるはずです。以下は参考用の小さなサンプルコードです。
<span style="COLOR: #000000"><br><span style="COLOR: #0000bb"><? <BR></SPAN><SPAN style="COLOR: #ff8000">// キャッシュを使用してデータをロード <br><br></SPAN><SPAN style="COLOR: #007700">function </SPAN><SPAN style="COLOR: #0000bb">load_data</SPAN><SPAN style="COLOR: #007700">(</SPAN><SPAN style="COLOR: #0000bb">$id </SPAN><SPAN style="COLOR: #007700">,</SPAN><SPAN style="COLOR: #0000bb">$cache_lifetime</SPAN><SPAN style="COLOR: #007700">) { <br><br></SPAN><SPAN style="COLOR: #ff8000">// 戻りデータ <br><br></SPAN><SPAN style="COLOR: #0000bb">$data </SPAN><SPAN style="COLOR: #007700">= array(); <br><br></SPAN><SPAN style="COLOR: #ff8000">// make cache filename <br><br></SPAN><SPAN style="COLOR: #0000bb">$cache_filename </SPAN><SPAN style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #0000bb">'cache_'</SPAN> <SPAN style="COLOR: #007700">.</SPAN><SPAN style="COLOR: #0000bb">$id</SPAN><SPAN style="COLOR: #007700">.</SPAN><SPAN style="COLOR: #0000bb">'</SPAN><SPAN style="COLOR: #007700">.</SPAN><SPAN style="COLOR: #0000bb">php'</SPAN><SPAN style="COLOR: #007700">; <br><br></SPAN><SPAN style="COLOR: #ff8000">// キャッシュ ファイルの最終変更時刻を確認 <br><br></SPAN><SPAN style="COLOR: #0000bb">$cache_filetime </SPAN><SPAN style="COLOR: #007700">= </SPAN><SPAN style="COLOR: #0000bb">filemtime </SPAN><SPAN style="COLOR: #007700">(</SPAN><SPAN style="COLOR: #0000bb">$cache_filename</SPAN><SPAN style="COLOR: #007700">); <br><br>if (</SPAN><SPAN style="COLOR: #0000bb">時間</SPAN><SPAN style="COLOR: #007700">() - </SPAN><SPAN style="COLOR: #0000bb">$cache_filetime </SPAN><SPAN style="COLOR: #007700"><= </SPAN><SPAN style="COLOR: #0000bb">$cache_lifetime</SPAN><SPAN style="COLOR: #007700">) { <br><br></SPAN><SPAN style="COLOR: #ff8000">//** キャッシュは期限切れではありません <br><br></SPAN><SPAN style="COLOR: #007700">include(</SPAN><SPAN style="COLOR: #0000bb">$cache_filename </SPAN><SPAN style="COLOR: #007700">); <br><br>} else { <br><br></SPAN><SPAN style="COLOR: #ff8000">//** キャッシュの有効期限が切れています <br><br>// データベースからデータをロードします <br><br>// 。 .. <br><br></SPAN><SPAN style="COLOR: #007700">while (</SPAN><SPAN style="COLOR: #0000bb">$dbo</SPAN><SPAN style="COLOR: #007700">-></span><span style="COLOR: #0000bb">nextRecord</span><span style="COLOR: #007700">()) { <br><br></span><span style="COLOR: #ff8000">// $data[] = ... <br><br></span><span style="COLOR: #007700">} <br><br></span><span style="COLOR: #ff8000">// 形式PHP ファイルとしてのデータ <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">=</span><span style="COLOR: #dd0000">" <br><br>while (list($key, $val) = each($data)) { <br><br>$data_cache .= "</span><span style="COLOR: #0000bb">$data</span><span style="COLOR: #007700">[</span><span style="COLOR: #0000bb">'$key'</span><span style="COLOR: #007700"> ]=array(</span><span style="COLOR: #0000bb">'</span><span style="COLOR: #dd0000">"; <br><br>$data_cache .= "</span><span style="COLOR: #0000bb">'NAME'</span><span style="COLOR: #007700">=></span><span style="COLOR: #dd0000">""</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">qoute</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$val</span><span style="COLOR: #007700">[</span><span style="COLOR: #0000bb">'NAME '</span><span style="COLOR: #007700">]).</span><span style="COLOR: #dd0000">""," <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">.= </span><span style="COLOR: #dd0000">"' VALUE'=>""</span><span style="COLOR: #007700">.</span><span style="COLOR: #0000bb">qoute</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$val</span><span style="COLOR: #007700">[</span><span style="COLOR: #0000bb">' VALUE'</span><span style="COLOR: #007700">]).</span><span style="COLOR: #dd0000">""" <br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">.= </span><span style="COLOR: #dd0000">"; );rn"</span><span style="COLOR: #007700">; <br><br>}<br><br></span><span style="COLOR: #0000bb">$data_cache </span><span style="COLOR: #007700">= </span><span style="COLOR: #dd0000">"?>rn"</span><span style="COLOR: #007700"><br><br>// データをキャッシュ ファイルに保存します </span><span style="COLOR: #ff8000"><br><br>if (</span><span style="COLOR: #007700">$fd </span><span style="COLOR: #0000bb">= </span><span style="COLOR: #007700">fopen</span> <span style="COLOR: #0000bb">(</span><span style="COLOR: #007700">$cache_filename</span><span style="COLOR: #0000bb">,</span><span style="COLOR: #007700">'w</span><span style="COLOR: #0000bb"> </span><span style="COLOR: #007700">'</span><span style="COLOR: #0000bb">)) { </span><span style="COLOR: #007700"><br><br>fputs</span><span style="COLOR: #0000bb">(</span><span style="COLOR: #007700">$fd</span><span style="COLOR: #0000bb">,</span><span style="COLOR: #007700">$data_cache</span><span style="COLOR: #0000bb">); </span><span style="COLOR: #007700"><br><br>fclose</span><span style="COLOR: #0000bb">(</span><span style="COLOR: #007700">$fd</span><span style="COLOR: #0000bb">) </span><span style="COLOR: #007700">} <br><br>} <br><br>return <br><br>$data</span><span style="COLOR: #0000bb">} </span><span style="COLOR: #007700"><br><br>?><br> <br> </span><span style="COLOR: #0000bb"></span><br><br>該当する状況: </span>1. データは、主に読み取り操作に対して比較的安定しています。
2. ファイル操作はデータベース操作よりも高速です。