ホームページ php教程 php手册 PHPキャッシュテクノロジーの紹介

PHPキャッシュテクノロジーの紹介

Jun 13, 2016 pm 12:35 PM
php 導入 メモリ テクノロジー バンドル 書類 使用 コンピューター キャッシュ

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

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

インターネットも 2 8 結論です。Baidu 検索のキーワードと同じように、80% の人がコンテンツの 20% を検索しているため、これらのキーワードの 20% のコンテンツを保存するだけで済みます。それが優れていれば、数十億のレコードの中からユーザーが必要とするコンテンツを非常に効率的に素早く返すことができます。

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

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

データ キャッシュ: ここで説明するデータ キャッシュは、ページがアクセスされるたびに、データベース クエリの PHP キャッシュ メカニズムを指します。まず、対応するキャッシュ データが存在するかどうかを検出し、存在しない場合は、データベースに接続してデータを取得し、クエリ結果をシリアル化してファイルに保存します。キャッシュテーブルまたはファイル。

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

一般的な方法として、複数のテーブルを関連付けた場合、添付されたテーブルの内容が配列に生成され、必要に応じて配列が分解されて保存されます。読み取りできるテーブルが 1 つだけであるということですが、欠点は、2 つのデータを同期するためにさらに多くの手順が必要になることです。これは、速度と引き換えにハードディスクを使用することが重要です。

2. ページ キャッシュ:

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

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

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

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

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

5. 静的キャッシュ:

ここでいう静的キャッシュとは、HTML や XML などのテキストファイルを静的に直接生成し、更新があった場合に再生成するものを指します。 、あまり変更のないページに適しているため、ここでは説明しません。


上記の内容は、他のフレームワークを直接 CP するコードレベルのソリューションであり、変更するのが面倒です。内容は似ており、簡単に実行でき、さまざまな方法で使用できます。ただし、以下の内容はサーバー側のキャッシュ ソリューションであり、コード レベルではありません。

6. メモリ キャッシュ:

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

7. PHP バッファ:

これについては詳しく説明しません。

8. MYSQL キャッシュ:

これは、クラシック データベースでもこのメソッドが使用されていると考えられます。実行時間以下、0.09xxx など

9. リバースプロキシベースの Web キャッシュ:

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 = '顧客から CustomerName、CustomerID を選択';
$rs = $conn->CacheExecute(15,$sql)>

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

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

require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

if(!$smarty->is_cached('index.tpl')) {
// 利用可能なキャッシュはありません。
$contents = get_database_contents();
$smarty->assign($contents);

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

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

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

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PSが荷重を見せ続ける理由は何ですか? PSが荷重を見せ続ける理由は何ですか? Apr 06, 2025 pm 06:39 PM

PSの「読み込み」の問題は、リソースアクセスまたは処理の問題によって引き起こされます。ハードディスクの読み取り速度は遅いか悪いです。CrystaldiskInfoを使用して、ハードディスクの健康を確認し、問題のあるハードディスクを置き換えます。不十分なメモリ:高解像度の画像と複雑な層処理に対するPSのニーズを満たすためのメモリをアップグレードします。グラフィックカードドライバーは時代遅れまたは破損しています:ドライバーを更新して、PSとグラフィックスカードの間の通信を最適化します。ファイルパスが長すぎるか、ファイル名に特殊文字があります。短いパスを使用して特殊文字を避けます。 PS独自の問題:PSインストーラーを再インストールまたは修理します。

PSが常にロードされていることを常に示しているときに、ロードの問題を解決する方法は? PSが常にロードされていることを常に示しているときに、ロードの問題を解決する方法は? Apr 06, 2025 pm 06:30 PM

PSカードは「ロード」ですか?ソリューションには、コンピューターの構成(メモリ、ハードディスク、プロセッサ)の確認、ハードディスクの断片化のクリーニング、グラフィックカードドライバーの更新、PS設定の調整、PSの再インストール、優れたプログラミング習慣の開発が含まれます。

クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? Apr 07, 2025 am 12:02 AM

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

PSの負荷速度をスピードアップする方法は? PSの負荷速度をスピードアップする方法は? Apr 06, 2025 pm 06:27 PM

Slow Photoshopの起動の問題を解決するには、次のような多面的なアプローチが必要です。ハードウェアのアップグレード(メモリ、ソリッドステートドライブ、CPU)。時代遅れまたは互換性のないプラグインのアンインストール。システムのゴミと過剰な背景プログラムを定期的にクリーンアップします。無関係なプログラムを慎重に閉鎖する。起動中に多数のファイルを開くことを避けます。

PHPで厳密なタイプ(declare(strict_types = 1);)を説明します。 PHPで厳密なタイプ(declare(strict_types = 1);)を説明します。 Apr 07, 2025 am 12:05 AM

PHPの厳格なタイプは、declare(strict_types = 1)を追加することで有効になります。ファイルの上部に。 1)関数パラメーターのタイプチェックと戻り値を強制して、暗黙の型変換を防ぎます。 2)厳格なタイプを使用すると、コードの信頼性と予測可能性を改善し、バグを減らし、保守性と読みやすさを向上させることができます。

PSがファイルを開いたときにロードの問題を解決する方法は? PSがファイルを開いたときにロードの問題を解決する方法は? Apr 06, 2025 pm 06:33 PM

「ロード」は、PSでファイルを開くときに発生します。理由には、ファイルが大きすぎるか破損しているか、メモリが不十分で、ハードディスクの速度が遅い、グラフィックカードドライバーの問題、PSバージョンまたはプラグインの競合が含まれます。ソリューションは、ファイルのサイズと整合性を確認し、メモリの増加、ハードディスクのアップグレード、グラフィックカードドライバーの更新、不審なプラグインをアンインストールまたは無効にし、PSを再インストールします。この問題は、PSパフォーマンス設定を徐々にチェックして使用し、優れたファイル管理習慣を開発することにより、効果的に解決できます。

どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) どのようにしてクラスが拡張されたり、PHPでメソッドがオーバーライドされたりするのを防ぐことができますか? (最終キーワード) Apr 08, 2025 am 12:03 AM

PHPでは、最終的なキーワードを使用して、クラスが継承されないようにし、メソッドが上書きされます。 1)クラスを決勝としてマークする場合、クラスを継承することはできません。 2)メソッドを最終的にマークする場合、メソッドはサブクラスによって書き換えられません。最終的なキーワードを使用すると、コードの安定性とセキュリティが保証されます。

遅いPSの読み込みはコンピューター構成に関連していますか? 遅いPSの読み込みはコンピューター構成に関連していますか? Apr 06, 2025 pm 06:24 PM

PSの負荷が遅い理由は、ハードウェア(CPU、メモリ、ハードディスク、グラフィックスカード)とソフトウェア(システム、バックグラウンドプログラム)の影響を組み合わせたものです。ソリューションには、ハードウェアのアップグレード(特にソリッドステートドライブの交換)、ソフトウェアの最適化(システムガベージのクリーンアップ、ドライバーの更新、PS設定のチェック)、およびPSファイルの処理が含まれます。定期的なコンピューターのメンテナンスは、PSのランニング速度を改善するのにも役立ちます。

See all articles