ホームページ >バックエンド開発 >PHPチュートリアル >クイックヒント:PHPでデータをキャッシュする方法
このチュートリアルでは、PHPキャッシュメカニズムとそのアプリケーションについてすぐに説明します。
効率的なパフォーマンスは、PHPアプリケーション開発の鍵です。数千人または数百万人のユーザーに直面して、Webアプリケーションのパフォーマンスと可用性は大きな課題に直面しています。キャッシュテクノロジーは、パフォーマンスのボトルネックを効果的に回避し、アプリケーションの効率を向上させることができます。
apc_store()
、memcache_set()
、xcache_set()
などのさまざまなキャッシュデータ関数を提供します。 キャッシングは、一時的なストレージの場所に頻繁にアクセスされるデータを保存して、元のストレージ場所から取得される回数を減らすために頻繁にアクセスした技術です。これにより、ウェブサイトまたはアプリケーションのパフォーマンスが大幅に向上する可能性があります。これは、キャッシュからのデータにアクセスすることは、ソースからデータにアクセスするよりもはるかに高速であるためです。
PHPは、キャッシュを実装するさまざまな方法を提供します。別々に見てみましょう。
出力バッファリングは、PHPスクリプトの出力をブラウザに直接送信するのではなく、バッファーに保存できるようにする手法です。これにより、ユーザーに表示する前に出力を変更したり、出力で他のアクションを実行したりすることができます。
出力バッファリングを開始するには、ob_start()
関数を使用できます。この関数は出力バッファーをオンにし、スクリプトから送信されたすべての出力のキャプチャを開始します。その後、出力はob_get_contents()
関数を使用して変数に保存できます。最後に、ob_end_flush()
関数を使用して出力バッファリングを終了し、出力をブラウザに送信するか、ob_end_clean()
関数を使用して破棄することもできます。
以下は、出力バッファリングの使用方法の例です。
この例では、最初の<code class="language-php"><?php ob_start(); // 开始输出缓冲 echo '此输出将存储在缓冲区中'; $output = ob_get_contents(); // 获取输出缓冲区的内容 ob_end_clean(); // 结束输出缓冲区并丢弃内容 echo '此输出将发送到浏览器'; ?></code>命令を含む出力バッファーの内容を破棄するため、文字列「この出力がブラウザに送信される」のみが出力されます。
echo
出力バッファーは、スクリプトにアクセスするたびに再生する代わりに、PHPスクリプトの出力をメモリに保存できるため、キャッシュとして使用できます。
キャッシュ関数
、apc_store()
を含むキャッシュデータに特にいくつかの関数を提供します。これらの関数を使用して、メモリにデータを保存し、ハードドライブに保存されているデータよりもはるかに速くアクセスできます。 memcache_set()
apc_store()
apc_store()
関数は、PHPにオペコードキャッシュを提供する代替PHPキャッシュ(APC)拡張機能の一部です。 (OpCode Cachingは、要求するたびにソースコードを賠償して再コンパイルする代わりに、PHPスクリプトのコンパインされたバイトコードをメモリにキャッシュするPHPパフォーマンス最適化手法です。
以下は、apc_store()
関数を使用して値をメモリにキャッシュする方法の例です。
<code class="language-php"><?php ob_start(); // 开始输出缓冲 echo '此输出将存储在缓冲区中'; $output = ob_get_contents(); // 获取输出缓冲区的内容 ob_end_clean(); // 结束输出缓冲区并丢弃内容 echo '此输出将发送到浏览器'; ?></code>キャッシュされた値を取得するには、
関数を使用できます:apc_fetch()
<code class="language-php"><?php $value = '这是要缓存的值'; // 将值存储在缓存中一小时 apc_store('cache_key', $value, 3600); ?></code>
の詳細については、こちらを参照してください。 (関連するリンクをここに挿入する必要があります)apc_store()
memcache_set()
関数はMemcache拡張機能の一部であり、MemcacheサーバーをPHPのキャッシュとして使用できます。指定されたキーと有効期限を使用して、Memcacheサーバーに値を保存します。 memcache_set()
の詳細については、こちらを参照してください。 (関連するリンクをここに挿入する必要があります)memcache_set()
xcache_set()
関数はXcache拡張機能の一部であり、PHP OpCodeキャッシュとデータキャッシュを提供します。指定されたキーと有効期限を使用して、Xcacheキャッシュに値を保存します。 xcache_set()
の詳細については、こちらを参照してください。 (関連するリンクをここに挿入する必要があります)xcache_set()
データベースを使用した
1つのケースは、メモリに適していない可能性のある大量のデータをキャッシュする必要があることです。さらに、複数のサーバーからキャッシュされたデータにアクセスする必要がある場合は、サーバー間でキャッシュされたデータを簡単に共有できるため、データベースのデータをキャッシュすることが役立ちます。
データをデータベースにキャッシュするには、少なくとも2つの列のテーブルを使用できます。1つはキャッシュキー用、もう1つはキャッシュデータ用です。その後、選択したクエリを使用して、キャッシュキーがテーブルに存在するかどうかを確認し、挿入または更新クエリを使用してデータをテーブルに保存できます。
以下は、MySQLデータベースでデータをキャッシュする方法の例です。
この例は、キャッシュキーがキャッシュテーブルに存在するかどうかを確認する方法と、もしそうなら、キャッシュ値を更新する方法を示しています。キャッシュキーが存在しない場合、キャッシュキーと値を含む新しい行がテーブルに挿入されます。その後、キャッシュされた値がテーブルから取得され、ユーザーに表示されます。
<code class="language-php"><?php $cachedValue = apc_fetch('cache_key'); if ($cachedValue) { // 使用缓存的值 echo $cachedValue; } else { // 生成值并将其存储在缓存中 $value = '这是要缓存的值'; apc_store('cache_key', $value, 3600); echo $value; } ?></code>
結論
PHPキャッシュは、PHPコードの出力をキャッシュに保存するプロセスであり、同じデータへの将来の要求をより速く提供できるようにします。これは、サーバーの負荷を大幅に削減し、サイトのパフォーマンスを改善できるため、重要です。 PHPコードの出力を保存することにより、サーバーは各ユーザーに対して同じコードを繰り返し実行して時間とリソースを節約する必要はありません。
PHPキャッシュは、PHPスクリプトの出力をキャッシュに保存することで機能します。ユーザーがページをリクエストすると、サーバーは最初にページのキャッシュバージョンが存在するかどうかを確認します。存在する場合、サーバーはキャッシュバージョンを提供し、PHPスクリプトを実行する必要性を排除します。キャッシュバージョンが存在しない場合、サーバーはPHPスクリプトを実行し、ページを生成し、将来の使用のためにキャッシュに出力を保存します。
オペコードキャッシュ、ユーザーデータキャッシュ、ページキャッシュなど、いくつかのタイプのPHPキャッシュがあります。 OpCodeキャッシュストアはPHPコードをコンパイルしたため、リクエストするたびにサーバーはコードをコンパイルする必要はありません。ユーザーデータキャッシュは、データベースクエリまたはAPI呼び出しの結果を保存するため、重複クエリまたは呼び出しの必要性が減少します。ページキャッシュは、ページのHTML出力全体を保存し、PHPコードを実行せずにサーバーがページを提供できるようにします。
アプリケーションにPHPキャッシュを実装する方法はいくつかあります。最も一般的に使用される方法の1つは、APCやOpcacheなどのPHPキャッシュ拡張機能を使用することです。これらの拡張機能は、アプリケーションにOpCodeキャッシュを簡単に実装する方法を提供します。ユーザーデータキャッシュの場合、MemcachedやRedisなどのキャッシュシステムを使用できます。ページキャッシングの場合、ワニスなどの逆プロキシまたはPHPFastCacheなどのPHPクラスを使用できます。
PHPキャッシュは多くの利点を提供します。サーバーの負荷と応答時間を短縮することにより、ウェブサイトのパフォーマンスを大幅に向上させます。また、データベースクエリまたはAPI呼び出しを重複させ、リソースを節約し、効率を高める必要性を減らすことができます。さらに、追加のサーバーリソースを必要とせずに、ウェブサイトがより多くのトラフィックを処理するのに役立ちます。
PHPキャッシュには多くの利点がありますが、潜在的な欠点もあります。主な欠点の1つは、PHPコードの変更が提供されたキャッシュバージョンのためにすぐに反映されない可能性があるため、デバッグがより困難になる可能性があることです。さらに、不適切に管理されている場合、キャッシュはユーザーに時代遅れのコンテンツを提供する可能性があります。
PHPキャッシュのクリアは、使用しているキャッシュの種類に応じて、いくつかの方法で実行できます。 OpCodeキャッシュの場合、キャッシュ拡張機能によって提供される機能を使用してキャッシュをクリアできます。ユーザーデータキャッシュの場合、キャッシュシステムが提供するメソッドを使用してキャッシュをクリアできます。ページキャッシュの場合、キャッシュファイルを削除するか、キャッシュクラスまたは逆プロキシで提供されるメソッドを使用してキャッシュをクリアできます。
PHPキャッシュの最適化には、最大のパフォーマンスを確保するためにキャッシュポリシーを微調整することが含まれます。これには、キャッシュライフサイクルの調整、どのデータがキャッシュされ、どのデータがキャッシュされていないかを決定し、アプリケーションのさまざまな部分に異なるタイプのキャッシュを使用することが含まれます。さらに、キャッシュの使用とパフォーマンスを監視することで、改善領域を特定することができます。
はい、共有ホスティングでPHPキャッシュを使用できます。ただし、ホスティングプロバイダーによっては、オプションが制限される場合があります。一部のプロバイダーは、PHP拡張機能またはキャッシュシステムをインストールすることを許可しない場合があります。この場合、拡張機能やシステムなしでキャッシュ機能を提供するPHPクラスを使用できます。
クライアントキャッシュにはユーザーのデバイスにデータを保存することが含まれますが、サーバー側のキャッシュにはサーバーにデータを保存することが含まれます。両方のタイプのキャッシュは、重複する要求または計算の必要性を減らすことにより、パフォーマンスを改善するように設計されています。ただし、さまざまなシナリオで使用されており、さまざまな利点と制限があります。たとえば、サーバー側のキャッシュはサーバーの負荷を減らして応答時間を増やすことができますが、クライアント側のキャッシュはネットワークの遅延を減らし、帯域幅を節約できます。
以上がクイックヒント:PHPでデータをキャッシュする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。