PHP の 9 つの主要なキャッシュ テクノロジの概要
つまり、すべてのページが 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>
この方法では、ページの頻繁に変更されない部分は静的にキャッシュされますが、頻繁に変更されるブロックはキャッシュされず、最終的にはまとめられて表示されます。これは、ob_get_contents に似た方法、または ESI のようなものを使用して実現できます。この戦略は、動的ページの比較的静的なフラグメント部分をキャッシュするために使用されます (ESI テクノロジ、Baidu を参照してください。ここでは詳しく説明しません)。
この方法は、モールの商品ページなどに使用できます。
名前が示すように、データをキャッシュする方法です。 、モール内で商品 ID を使用して特定の商品情報を要求した場合、店舗情報、商品情報などのデータを PHP ファイルにキャッシュして、一意の識別子を作成できます。誰かがこの商品を閲覧したいとき、まずデータベースに問い合わせずにこのファイル内の情報を直接調整します。実際、キャッシュファイルにキャッシュされているのは
Ecmall モールのシステムです。 used;
実際、これはクエリ ステートメントに従ってファイルにキャッシュするというデータ キャッシュと同じ考え方です。次回同じクエリが発生したときは、データベースをチェックする代わりに、このファイルからデータを直接取得します。ただし、ここでのキャッシュ ファイル名は、クエリ ステートメントに基づいて一意に識別する必要がある場合があります。時間変更に基づくキャッシュ
実際には、これは実際のキャッシュ方法ではありません。上記のキャッシュ テクノロジ 2、3、および 4 は通常、時間変更の判断を使用します。つまり、有効なキャッシュ ファイル時間を設定する必要があります。この有効時間内であれば、同じアクセスで最初にキャッシュ ファイルの内容が取得されますが、設定されたキャッシュ時間を超えると、データベースからデータを再度取得する必要があり、たとえば次のようになります。ホームページは 2 時間ごとに更新されるように設定されています。
5. コンテンツの変更に応じてキャッシュします。
販売者がバックグラウンドで商品情報を変更すると、購入者がアクセスすると同時にキャッシュ ファイルが更新されます。製品情報を取得する場合、実際には静的ページにアクセスしているため、データベースにアクセスする必要はありません。
想像してみてください。製品ページがキャッシュされていない場合、製品にアクセスするたびにデータベースを確認する必要があります。 100,000 人が製品をオンラインで閲覧すると、サーバーに大きな負荷がかかります。
6. メモリ キャッシュ
システム メモリにキャッシュする必要がある情報をキャッシュします。情報を取得する必要がある場合、より一般的に使用される方法はキー -> 値です。
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 をインストールする場合: ./configure –enable-cache –enable-disk-cache –enable-mem-cache
8. php APC キャッシュ拡張子
<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 ファイルの場合、初めて実行するときにオペコード コードをキャッシュすることができ、次回このページを実行するときに、キャッシュされたオペコード コードを直接見つけて、中間ステップを必要とせずに最後のステップを直接実行します。
よりよく知られているものは、XCache、Turck MM Cache、PHP Accelerator などです。
多くのインターネット エリート、テクニカル ディレクター、アーキテクト、プロジェクト マネージャーが集まる万能プログラマー コミュニケーション QQ グループ 290551701 は、オープンソース テクノロジーの研究者、業界関係者、専門家、初心者を歓迎します。 IT業界で働く皆さん!