ホームページ  >  記事  >  バックエンド開発  >  PHP の 9 つの主要なキャッシュ テクノロジの概要

PHP の 9 つの主要なキャッシュ テクノロジの概要

WBOY
WBOYオリジナル
2016-06-13 12:24:54838ブラウズ

PHP の 9 つの主要なキャッシュ テクノロジの概要

1. フルページ静的キャッシュ

つまり、すべてのページが HTML 静的ページに生成され、ユーザーがアクセスすると、そこから離れることなく静的ページに直接アクセスされます。 .PHP サーバーの解析プロセス。この方法は、dedecms などの CMS システムでより一般的です。

一般的な実装方法は、出力キャッシュを使用することです。

<code><span class="typ">Ob_start<span class="pun">()<span class="pln"><span class="pun">******要运行的代码*******<span class="pln">$content <span class="pun">=<span class="pln"> <span class="typ">Ob_get_contents<span class="pun">();<span class="pln"><span class="pun">****将缓存内容写入<span class="pln">html<span class="pun">文件*****<span class="pln"><span class="typ">Ob_end_clean<span class="pun">();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>

2. ページ部分キャッシュ

この方法では、ページの頻繁に変更されない部分は静的にキャッシュされますが、頻繁に変更されるブロックはキャッシュされず、最終的にはまとめられて表示されます。これは、ob_get_contents に似た方法、または ESI のようなものを使用して実現できます。この戦略は、動的ページの比較的静的なフラグメント部分をキャッシュするために使用されます (ESI テクノロジ、Baidu を参照してください。ここでは詳しく説明しません)。

この方法は、モールの商品ページなどに使用できます。

3. データのキャッシュ

名前が示すように、データをキャッシュする方法です。 、モール内で商品 ID を使用して特定の商品情報を要求した場合、店舗情報、商品情報などのデータを PHP ファイルにキャッシュして、一意の識別子を作成できます。誰かがこの商品を閲覧したいとき、まずデータベースに問い合わせずにこのファイル内の情報を直接調整します。実際、キャッシュファイルにキャッシュされているのは

Ecmall モールのシステムです。 used;

4. クエリ キャッシュ

実際、これはクエリ ステートメントに従ってファイルにキャッシュするというデータ キャッシュと同じ考え方です。次回同じクエリが発生したときは、データベースをチェックする代わりに、このファイルからデータを直接取得します。ただし、ここでのキャッシュ ファイル名は、クエリ ステートメントに基づいて一意に識別する必要がある場合があります。時間変更に基づくキャッシュ

実際には、これは実際のキャッシュ方法ではありません。上記のキャッシュ テクノロジ 2、3、および 4 は通常、時間変更の判断を使用します。つまり、有効なキャッシュ ファイル時間を設定する必要があります。この有効時間内であれば、同じアクセスで最初にキャッシュ ファイルの内容が取得されますが、設定されたキャッシュ時間を超えると、データベースからデータを再度取得する必要があり、たとえば次のようになります。ホームページは 2 時間ごとに更新されるように設定されています。

5. コンテンツの変更に応じてキャッシュします。

これは、独立したキャッシュ テクノロジではなく、組み合わせて使用​​する必要があります。データベースの内容が変更されると、すぐに更新されます。 キャッシュ ファイル

たとえば、交通量が多く、商品数が多いショッピング モールでは、商品テーブルが比較的大きくなる必要があり、このテーブルにかかる負担は大きくなります。また、商品表示ページをキャッシュできます。


販売者がバックグラウンドで商品情報を変更すると、購入者がアクセスすると同時にキャッシュ ファイルが更新されます。製品情報を取得する場合、実際には静的ページにアクセスしているため、データベースにアクセスする必要はありません。

想像してみてください。製品ページがキャッシュされていない場合、製品にアクセスするたびにデータベースを確認する必要があります。 100,000 人が製品をオンラインで閲覧すると、サーバーに大きな負荷がかかります。

6. メモリ キャッシュ

これに関して、最初に思い浮かぶのは Memcached です。高性能の分散メモリ キャッシュ サーバー。 一般的な使用目的は、データベース クエリ結果をキャッシュすることでデータベース アクセスの数を減らし、動的 ​​Web アプリケーションの速度とスケーラビリティを向上させることです。

システム メモリにキャッシュする必要がある情報をキャッシュします。情報を取得する必要がある場合、より一般的に使用される方法はキー -> 値です。

7. Apache キャッシュ モジュール
<code><span class="pun"><?<span class="pln">php      $memcachehost <span class="pun">=<span class="pln"> <span class="str">'192.168.6.191'<span class="pun">;<span class="pln">     $memcacheport <span class="pun">=<span class="pln"> <span class="lit">11211<span class="pun">;<span class="pln">     $memcachelife <span class="pun">=<span class="pln"> <span class="lit">60<span class="pun">;<span class="pln">     $memcache <span class="pun">=<span class="pln"> <span class="kwd">new<span class="pln"> <span class="typ">Memcache<span class="pun">;<span class="pln">     $memcache<span class="pun">-><span class="pln">connect<span class="pun">(<span class="pln">$memcachehost<span class="pun">,<span class="pln">$memcacheport<span class="pun">)<span class="pln"> <span class="kwd">or<span class="pln"> <span class="kwd">die<span class="pln"> <span class="pun">(<span class="str">"Could not connect"<span class="pun">);<span class="pln">     $memcache<span class="pun">-><span class="kwd">set<span class="pun">(<span class="str">'key'<span class="pun">,<span class="str">'缓存的内容'<span class="pun">);<span class="pln">     $get <span class="pun">=<span class="pln"> $memcache<span class="pun">-><span class="kwd">get<span class="pun">(<span class="pln">$key<span class="pun">);<span class="pln">       <span class="com">//获取信息<span class="pln"><span class="pun">?></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>

Apache のインストール後は、キャッシュすることができません。外部キャッシュやSquidサーバーでWebアクセラレーションが必要な場合は、当然ながらApacheのインストール時にmod_cacheモジュールが有効化されていることが前提となります。

Apache をインストールする場合: ./configure –enable-cache –enable-disk-cache –enable-mem-cache

8. php APC キャッシュ拡張子

Php にはAPC キャッシュ拡張機能、Windows では php_apc.dll を使用するには、まずこのモジュールをロードしてから、php.ini で設定する必要があります:

9. オペコード キャッシュ
<code><span class="pun">[<span class="pln">apc<span class="pun">]<span class="pln">      extension<span class="pun">=<span class="pln">php_apc<span class="pun">.<span class="pln">dll      apc<span class="pun">.<span class="pln">rfc1867 <span class="pun">=<span class="pln"> on      upload_max_filesize <span class="pun">=<span class="pln"> <span class="lit">100M<span class="pln">      post_max_size <span class="pun">=<span class="pln"> <span class="lit">100M<span class="pln">      apc<span class="pun">.<span class="pln">max_file_size <span class="pun">=<span class="pln"> <span class="lit">200M<span class="pln">      upload_max_filesize <span class="pun">=<span class="pln"> <span class="lit">1000M<span class="pln">      post_max_size <span class="pun">=<span class="pln"> <span class="lit">1000M<span class="pln">      max_execution_time <span class="pun">=<span class="pln"> <span class="lit">600<span class="pln"> <span class="pun">;<span class="pln">   <span class="pun">每个<span class="pln">PHP<span class="pun">页面运行的最大时间值(秒),默认<span class="lit">30<span class="pun">秒<span class="pln">      max_input_time <span class="pun">=<span class="pln"> <span class="lit">600<span class="pln"> <span class="pun">;<span class="pln">       <span class="pun">每个<span class="pln">PHP<span class="pun">页面接收数据所需的最大时间,默认<span class="lit">60<span class="pln">      memory_limit <span class="pun">=<span class="pln"> <span class="lit">128M<span class="pln"> <span class="pun">;<span class="pln">       <span class="pun">每个<span class="pln">PHP<span class="pun">页面所吃掉的最大内存,默认<span class="lit">8M</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>

実行プロセスは次の図に示すことができます。


まず、PHP コードがトークンに解析され、次にオペコード コードにコンパイルされ、最後にオペコード コードが実行されて結果が返されます。同じ PHP ファイルの場合、初めて実行するときにオペコード コードをキャッシュすることができ、次回このページを実行するときに、キャッシュされたオペコード コードを直接見つけて、中間ステップを必要とせずに最後のステップを直接実行します。 PHP の 9 つの主要なキャッシュ テクノロジの概要
よりよく知られているものは、XCache、Turck MM Cache、PHP Accelerator などです。

多くのインターネット エリート、テクニカル ディレクター、アーキテクト、プロジェクト マネージャーが集まる万能プログラマー コミュニケーション QQ グループ 290551701 は、オープンソース テクノロジーの研究者、業界関係者、専門家、初心者を歓迎します。 IT業界で働く皆さん!

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