キャッシュとは、ツールや材料をワークベンチに移動するのと同じように、コンピュータが最もよく使用されるファイルをメモリから取得してキャッシュに一時的に配置することを意味します。これは、それらを倉庫に取りに行くよりも便利です。使用されるとき。キャッシュは RAM (電源を切ると失われる非永続的な記憶域) を使用することが多いため、作業が完了した後もファイルは永続的な記憶域としてハードディスクやその他の記憶域に送信されます。コンピュータの最大のキャッシュはメモリ スティックです。最も高速なものは、CPU に組み込まれている L1 キャッシュと L2 キャッシュです。ハード上には 16M または 32M のキャッシュもあります。ディスク。キャッシュを単一のものとして理解しないでください。キャッシュは処理方法の総称です。
WEB開発における高トラフィックに対処する最も効果的な方法は、サーバーの負荷パフォーマンスを効果的に改善し、時間とスペースを交換できるキャッシュテクノロジーを使用することです。
インターネットも 2 8 最終です。Baidu 検索のキーワードと同じように、80% の人がコンテンツの 20% を検索しているため、非常に効果的になるには、これらのキーワードの 20% のコンテンツを保存するだけで済みます。数十億のレコードの中からユーザーが必要とするコンテンツを返します。
この記事では、PHP WEB 開発で一般的に使用されるいくつかの保存方法を見てみましょう。
1. ユニバーサル キャッシュ テクノロジ:
データ キャッシュ: ここで説明するデータ キャッシュは、ページにアクセスするたびに、対応するキャッシュ データが存在するかどうかを最初に検出します。データベースに接続し、クエリ結果をシリアル化してファイルに保存します。将来は、同じクエリ結果がキャッシュ テーブルまたはファイルから直接取得されます。
最も広く使用されている例は、結果 ID をテーブルにキャッシュし、次回同じキーワードを検索するときに最初にキャッシュ テーブルを検索する Discuz の検索機能です。
一般的な方法として、複数のテーブルを関連付けた場合、添付されたテーブルの内容を配列に生成し、必要に応じて配列を分解して1つのテーブルのみを読み込むことができるという利点があります。ただし、データの同期にはさらに多くの手順が必要であり、速度と引き換えにデータベースが常にボトルネックになります。
2. ページのキャッシュ: ページにアクセスするたびに、まず対応するキャッシュされたページ ファイルが存在するかどうかを検出し、存在しない場合はデータベースに接続し、データを取得してページを表示し、キャッシュされたページ ファイルを生成します。同時に、次回アクセスするときにページ ファイルが活躍するようになります。 (インターネット上のテンプレート エンジンと一部の一般的な PHP キャッシュ メカニズム クラスには通常この機能があります)
3. 時間トリガー キャッシュ:
ファイルが存在するかどうか、およびタイムスタンプが設定された有効期限よりも小さいかどうかを確認します。現在のタイムスタンプよりも有効期限のタイムスタンプが大きい場合はキャッシュを使用し、それ以外の場合はキャッシュを更新します。
4. コンテンツトリガーキャッシュ:
データが挿入または更新されると、PHP キャッシュメカニズムが強制的に更新されます。
5. 静的キャッシュ:
ここで言う静的キャッシュとは、HTML や XML などのテキスト ファイルを静的に直接生成し、更新があったときに再生成することを指します。あまり変更のないページに適しています。それについて話します。
上記の内容は他のフレームワークを直接CPするもので、内容はほぼ同じですが、次の内容はさまざまな方法で使用できます。サーバー側のキャッシュ ソリューション。コード レベルでは、それを実現するには複数の関係者の協力が必要です。
6. メモリ キャッシュ:
Memcached は、データベースの負荷を軽減し、改善するために使用される、高性能の分散メモリ オブジェクト PHP キャッシュ メカニズム システムです。動的アプリケーションでのアクセス速度。
7. PHP バッファ: eaccelerator、phpa、xcache があります。これらについては詳しく説明しません。これを知っていれば問題ありません。
これは非コードレベルともみなされます。以下の実行時間、0.09xxx などを見てください。
Nginx、SQUID、mod_proxy など (apache2 以降)。 ) これは mod_proxy と mod_cache にも分かれています)
10. DNS ポーリング:
BIND はオープンソースの DNS サーバー ソフトウェアです。これは自分で調べてください。
chinacache などの一部の大手 Web サイトがこれを行っていることは知っています。簡単に言えば、同じページまたはファイルが異なるサーバーにキャッシュされ、北と南に従って適切なサーバーに自動的に解析されます。
なぜキャッシュテクノロジーを使用するのですか?理由は簡単、効率が上がるからです。プログラム開発では、情報を取得する主な方法は、Web サービスまたはその他の方法を使用することもあります。どの方法を使用しても、大規模な問題に直面すると効率のボトルネックになる可能性があります。これらの問題を解決するために、人々は多くの解決策を提案していますが、その中には、プログラムの実行効率を向上させる最適化ソフトウェア (APC、Eaccelerator、Zend Optimizer など) を使用するものもあります。これらのソフトウェアを使用すると、多くの場合、効率が大幅に向上しますが、仮想ホストを使用している場合は、これらのソフトウェアをインストールできるようにホストを制御する必要があります。サービスプロバイダーが何らかの最適化ソフトウェアをプリインストールしていることを祈るしかありません。そうでない場合は、PHP を使用して対応するキャッシュ機能を実装する必要があります。もしこれで迷ったなら、次の文章がインスピレーションを与えてくれると思います。
多くの PHP プログラマーは Adodb+Smarty などのゴールデン パートナーを使用しているため、まずそのキャッシュ機能の使用方法を見てみましょう。
まず、adodb が提供するデータ キャッシュ関数を見てみましょう:
include('adodb.inc.php'); ('mysql'); # 接続を作成します
$conn->PConnect(' localhost','userid','','agora');# MySQL、agora db に接続します
$sql = '顧客から CustomerName、CustomerID を選択'
$rs = $conn->CacheExecute(15,$sql) );
?>
上記のように、データがクエリされるたびに、対応する結果がシリアル化され、ファイルに保存されます。クエリ ステートメントは、クエリを実行せずにキャッシュ ファイルから取得できます。データベースを直接操作します。
Smarty が提供するページ キャッシュ関数を見てみましょう:
require('Smarty.class.php');
$smarty = new Smarty->caching = true; (!$smarty->is_cached('index.tpl')) {
// 利用可能なキャッシュがありません。ここで変数の割り当てを行います
$smarty->assign($contents); }
$ Smarty->display('index.tpl');
?>
上記のように、ページにアクセスするたびに、対応するキャッシュが存在するかどうかが最初に検出されます。データベースを取得し、データを取得し、テンプレート変数の割り当てを完了し、ページを表示し、同時にキャッシュ ファイルを生成します。これにより、キャッシュ ファイルは次回アクセスされたときに有効になり、データ クエリ ステートメントが作成されます。 if ブロックは実行されません。もちろん、有効期間の設定やキャッシュグループの設定など、実際に使用する際には考慮すべき点がたくさんあります。詳細については、Smarty マニュアルのキャッシュに関する該当の章を確認してください。
上記の 2 つの一般的な PHP コンポーネント キャッシュ方法は、Adodb のキャッシュではデータをキャッシュするのに対し、Smarty のキャッシュではページをキャッシュすることに焦点が異なります。キャッシュ機能を提供するコンポーネントは他にも多数あります (PEAR::Cache_Lite など)。実際のプログラミングでどのソリューションを使用するかには、特定の状況の具体的な分析が必要であり、包括的に使用することもできます。
これらのコンポーネントの組み込みキャッシュ ソリューションを使用する明らかな利点は、その実装がクライアントに対して透過的であることです。キャッシュの詳細を深く考えずに、必要な設定(キャッシュ時間、キャッシュ ディレクトリなど)を行うだけで、システムが設定に従って自動的にキャッシュを管理します。しかし、その欠点も明らかです。各リクエストは依然として PHP によって解析される必要があり、この場合、単純に動的を実行するだけでは、純粋な静的リクエストに比べて依然として要件を満たすことができません。はい、キャッシュだけでは十分ではありません。静的キャッシュを実装する必要があります。
以上、TV シリーズ Xue Pinggui と Wang Baochuan のあらすじ紹介と PHP キャッシュ技術の紹介を紹介しましたが、TV シリーズ Xue Pinggui と Wang Baochuan に興味のある友人の参考になれば幸いです。 PHPのチュートリアル。