ホームページ  >  記事  >  バックエンド開発  >  PHP キャッシュ テクノロジ

PHP キャッシュ テクノロジ

WBOY
WBOYオリジナル
2016-06-23 14:32:15723ブラウズ

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

1 2 include ( ' adodb.inc.php ' ); # ADOdb に共通のコードをロード
3 $ADODB_CACHE_DIR = ' /usr/ ADODB_cache ' ;
4 $conn = & ADONewConnection(' mysql ' ); # 接続を作成します
5 $conn -> # MySQL に接続しますagora db
6 $sql = ' select CustomerName, CustomerID from Customers ' ; シリアル化後は、データベースに直接クエリしなくても、同じクエリ ステートメントをキャッシュ ファイルから取得できます。
Smarty が提供するページ キャッシュ関数を見てみましょう:
1 2 require ( ' Smarty.class.php ' );
3 $smarty = new Smarty -> = true ;
5 if ( ! $smarty -> is_cached( 'index.tpl ' )) {

6 // 利用可能なキャッシュがないため、ここで変数の割り当てを行います
7 $contents = get_database_contents(); 8 $smarty - > assign ( $contents );
10 $smarty ->
11 ?> 存在しない場合は、データを取得します。テンプレート変数の代入、ページの表示、キャッシュファイルの生成を同時に行うことで、次回アクセス時からキャッシュファイルが有効となり、ifブロックのデータクエリは実行されなくなります。もちろん、有効期間の設定やキャッシュグループの設定など、実際に使用する際には考慮すべき点がたくさんあります。詳細については、Smarty マニュアルのキャッシュに関する該当の章を確認してください。
上記の 2 つの一般的な PHP コンポーネント キャッシュ方法は、Adodb のキャッシュではデータをキャッシュするのに対し、Smarty のキャッシュではページをキャッシュすることに焦点が異なります。キャッシュ機能を提供するコンポーネントは他にも多数あります (PEAR::Cache_Lite など)。実際のプログラミングでどのソリューションを使用するかには、特定の状況の具体的な分析が必要であり、包括的に使用することもできます。
これらのコンポーネントの組み込みキャッシュ ソリューションを使用する明らかな利点は、その実装がクライアントに対して透過的であることです。キャッシュの詳細を深く考えずに、必要な設定(キャッシュ時間、キャッシュ ディレクトリなど)を行うだけで、システムが設定に従って自動的にキャッシュを管理します。しかし、その欠点も明らかです。なぜなら、各リクエストは依然として PHP によって解析される必要があり、この場合、単に動的を実行するだけでは、純粋な静的リクエストと比較して効率が大幅に低下するからです。はい、キャッシュだけでは十分ではありません。静的キャッシュを実装する必要があります。
この記事はスクリプト ハウスからの転載です: http://www.jb51.net/html/200611/67/4965.htm


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