ホームページ > バックエンド開発 > PHPチュートリアル > PHP キャッシュ技術の概要_PHP チュートリアル

PHP キャッシュ技術の概要_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:59:59
オリジナル
903 人が閲覧しました

キャッシュとは、ツールや材料をワークベンチに移動するのと同じように、コンピュータが最もよく使用されるファイルをメモリから取得してキャッシュに一時的に置く領域を指します。これは、それらを倉庫に取りに行くよりも便利です。使用されるとき。キャッシュは RAM (電源を切ると失われる非永続的な記憶域) を使用することが多いため、作業が完了した後もファイルは永続的な記憶域としてハードディスクやその他の記憶域に送信されます。コンピュータの最大のキャッシュはメモリ スティックです。最も高速なものは、CPU に組み込まれている L1 キャッシュと L2 キャッシュです。ハード上には 16M または 32M のキャッシュもあります。ディスク。キャッシュを単一のものとして理解しないでください。キャッシュは処理方法の総称です。

WEB 開発における高トラフィックに対処する最も効果的な方法は、キャッシュ テクノロジーを使用することです。これにより、サーバーの負荷パフォーマンスを効果的に向上させ、時間とスペースを交換できます。

インターネットも 2 8 最終です。Baidu 検索のキーワードと同じように、80% の人がコンテンツの 20% を検索しているため、これらのキーワードのコンテンツを保存するだけで効果的にコンテンツを返すことができます。ユーザーは数十億のレコードの中からすぐに必要なものを探します。

この記事では、PHP WEB 開発で一般的に使用されるいくつかの保存方法を見てみましょう。

1. ユニバーサル キャッシュ テクノロジ:

データ キャッシュ: ここで説明するデータ キャッシュは、ページがアクセスされるたびに、対応するキャッシュ データが存在するかどうかを最初に検出します。存在しません。データベースに接続してデータを取得し、クエリ結果をシリアル化してファイルに保存するだけで、将来は同じクエリ結果がキャッシュ テーブルまたはファイルから直接取得されます。

最も広く使用されている例は、結果 ID をテーブルにキャッシュし、次回同じキーワードを検索するときに最初にキャッシュ テーブルを検索する Discuz の検索機能です。

一般的な方法として、複数のテーブルを関連付ける場合、添付されたテーブルの内容を配列に生成し、必要に応じて配列を分解するだけであることが利点です。テーブルを読み取ることはできますが、欠点は 2 つあります。データを同期するには、さらに多くの手順が必要になります。これは、速度を犠牲にすることが常にネックとなります。

2. ページキャッシュ:

ページにアクセスするたびに、まず対応するキャッシュされたページファイルが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、ページを表示します。キャッシュされたページ ファイルも同時に保存されるため、次回アクセスしたときにページ ファイルが有効になります。 (インターネット上のテンプレート エンジンといくつかの一般的な PHP キャッシュ メカニズム クラスには通常この機能があります)

3. 時間トリガー キャッシュ:

ファイルが存在するかどうか、およびファイルのタイムスタンプが設定された有効期限よりも小さいかどうかを確認します。変更タイムスタンプが現在よりも遅い タイムスタンプから有効期限タイムスタンプを引いた値の方が大きい場合はキャッシュを使用し、それ以外の場合はキャッシュを更新します。

4. コンテンツトリガーキャッシュ:

データが挿入または更新されると、PHP キャッシュメカニズムが強制的に更新されます。

5. 静的キャッシュ:

ここで言う静的キャッシュとは、HTML や XML などのテキスト ファイルを静的に直接生成し、更新があったときに再生成するものを指します。これは言っていません。


上記の内容はコードレベルのソリューションであり、他のフレームワークを直接CPするので変更するのが面倒ですが、内容は似ており、簡単に実行でき、いくつかの方法で使用できます。サーバーサイドキャッシュソリューション、非コードレベル、それを達成するには複数の関係者の協力が必要です

6. メモリキャッシュ:

Memcached はデータベース負荷を軽減するために使用される高性能の分散メモリオブジェクト PHP キャッシュメカニズムシステムです動的アプリケーションでは、アクセス速度が向上します。

7. PHP バッファ:

これらについては詳しく説明しませんが、そのようなものがあることを知っていれば大丈夫です。

8. MYSQL キャッシュ:

これは非コードレベルともみなされます。以下の実行時間 (0.09xxx など) を見てください。

9。

Nginx、SQUID、mod_proxy など(apache2 以降は mod_proxy と mod_cache に分かれています)

10. DNS ポーリング:

BIND は、これだけは言っておきます。これが存在することを誰もが知っている限り、自分で探してください。
chinacache などの一部の大手 Web サイトがこれを行っていることは知っています。簡単に言えば、同じページまたはファイルが異なるサーバーにキャッシュされ、北と南に従って適切なサーバーに自動的に解析されます。

なぜキャッシュテクノロジーを使用するのですか?理由は簡単、効率が上がるからです。プログラム開発では、情報を取得する主な方法は、Web サービスまたはその他の方法を使用することもあります。どの方法を使用しても、大規模な問題に直面すると効率のボトルネックになる可能性があります。これらの問題を解決するために、人々は多くの解決策を提案していますが、その中には、プログラムの実行効率を向上させる最適化ソフトウェア (APC、Eaccelerator、Zend Optimizer など) を使用するものもあります。これらのソフトウェアを使用すると、多くの場合、効率が大幅に向上しますが、仮想ホストを使用している場合は、これらのソフトウェアをインストールできるようにホストを制御する必要があります。サービスプロバイダーが何らかの最適化ソフトウェアをプリインストールしていることを祈るしかありません。そうでない場合は、PHP を使用して対応するキャッシュ機能を実装する必要があります。もしこれで迷ったなら、次の文章がインスピレーションを与えてくれると思います。

多くの PHP プログラマーは Adodb+Smarty などのゴールデン パートナーを使用しているので、まずそのキャッシュ機能の使用方法を見てみましょう。

まず、adodb が提供するデータ キャッシュ関数を見てみましょう:

include('adodb.inc.php'); # ADOdb に共通のコードを読み込みます
$ADODB_CACHE_DIR = '/usr/ADODB_cache';
$conn = &ADONewConnection('mysql'); # 接続を作成します
$conn->PConnect('localhost','userid','','agora');# MySQL、agora db に接続します
$sql = 'select CustomerName , CustomerID from Customers';
$rs = $conn->CacheExecute(15,$sql);

上記のように、データがクエリされるたびに、対応する結果がシリアル化されて保存されます。ファイルに追加すると、今後はデータベースに直接クエリを実行せずに、同じクエリ ステートメントをキャッシュ ファイルから取得できます。

Smarty が提供するページ キャッシュ関数を見てみましょう:

require('Smarty.class.php');
$smarty = new Smarty->caching = true; ;

if(!$smarty->is_cached('index.tpl')) {
// 利用可能なキャッシュがないため、ここで変数の割り当てを行います
$smarty->assign($) content);
}

$smarty->display('index.tpl');
?>

上記のように、ページにアクセスするたびに、対応するキャッシュが存在するかどうかが最初にチェックされます。存在しない場合は、データベースに接続し、データを取得し、テンプレート変数の割り当てを完了し、ページを表示し、同時にキャッシュ ファイルを生成します。これにより、キャッシュ ファイルは次回アクセスしたときに有効になります。 if ブロックのデータクエリステートメントは実行されません。もちろん、有効期間の設定やキャッシュグループの設定など、実際に使用する際には考慮すべき点がたくさんあります。詳細については、Smarty マニュアルのキャッシュに関する該当の章を確認してください。

上記の 2 つの一般的な PHP コンポーネントのキャッシュ方法の重点は異なります。Adodb のキャッシュではデータがキャッシュされますが、Smarty のキャッシュではページがキャッシュされます。キャッシュ機能を提供するコンポーネントは他にも多数あります (PEAR::Cache_Lite など)。実際のプログラミングでどのソリューションを使用するかには、特定の状況の具体的な分析が必要であり、包括的に使用することもできます。

これらのコンポーネントの組み込みキャッシュ ソリューションを使用する明らかな利点は、その実装がクライアントに対して透過的であることです。キャッシュの詳細を深く考えずに、必要な設定(キャッシュ時間、キャッシュ ディレクトリなど)を行うだけで、システムが設定に従って自動的にキャッシュを管理します。しかし、その欠点も明らかです。各リクエストは依然として PHP によって解析される必要があり、この場合、単純に動的を実行するだけでは、純粋な静的リクエストに比べて依然として要件を満たすことができません。はい、キャッシュだけでは十分ではありません。静的キャッシュを実装する必要があります。




http://www.bkjia.com/PHPjc/317235.html

www.bkjia.com

http://www.bkjia.com/PHPjc/317235.html技術記事キャッシュとは、ツールやマテリアルをワークベンチに移動するのと同じように、コンピュータが最もよく使用されるファイルをメモリから取り出してキャッシュに一時的に配置することにより、使用時間に比べて時間を節約します。 ...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート