Web アプリケーションの実行時間がますます長くなるにつれて、サーバーのパフォーマンスとデータ転送速度がますます大きな問題になります。 HTTP キャッシュは、この問題に対処する方法であり、よく使用されるリソースをクライアント側でキャッシュすると、アプリケーションがリクエストに迅速に応答できるようになり、サーバーの負荷が軽減されます。 Web 開発言語として、PHP 8.0 には、HTTP キャッシュを処理するための独自のソリューション、つまり PSR-7 もあります。
PSR-7 は HTTP メッセージ用に設計された PHP 標準で、HTTP リクエストおよびレスポンス メッセージを作成および処理するための統合インターフェイスを提供します。 HTTP メッセージの基本コンポーネント (HTTP ヘッダー、リクエスト URI、HTTP メソッド、HTTP ボディなど) と、それらを構築、シリアル化、解析する方法を定義します。
HTTP キャッシュの場合、PSR-7 の重要な役割は、キャッシュを制御するための標準である HTTP メッセージ ヘッダーを標準化することです。ユーザー エージェントは、Cache-Control などのヘッダー情報を使用してキャッシュ動作を制御できるため、効率的な HTTP キャッシュを実現するには PSR-7 の使用が不可欠です。
PSR-7 が提供できる HTTP キャッシュ ソリューションの一部を次に示します。
1.ETag キャッシュ
ETag キャッシュはエンティティ タグ キャッシュです。クライアントがリソースを要求すると、ETag が応答ヘッダーに追加されます。ETag はクライアントによって保存され、次回同じリソースが要求されたときにサーバーに送り返されます。サーバーは、クライアントの ETag がサーバー側のリソースと同じかどうかを確認します。その場合、サーバーは 304 Not Modified 応答コードを含む応答ヘッダーを返し、クライアントのキャッシュからリソースを抽出します。これにより、リソースの繰り返し送信が回避され、サーバーの負荷が軽減されます。
ETag キャッシュは、PSR-7 を使用して簡単に実装できます。応答メッセージに ETag ヘッダーを追加すると、次のリクエストのために ETag をクライアントに簡単に送り返すことができます。サーバーは比較に ETag 値を使用します。値が同じ場合、リソースは送信されなくなり、代わりに 304 Not Modified 応答が送信されます。以下に例を示します。
$response = new Response();
$response = $response
->withHeader('ETag', 'MyETagValue');
Last-Modified キャッシュはエンティティ タグ キャッシュです。サーバーは、要求されたリソースの最終変更時刻を値とする Last-Modified ヘッダーを応答メッセージ ヘッダーに追加します。クライアントが次回同じリソースを要求するとき、Last-Modified ヘッダー情報を日付と時刻の形式でサーバーに送り返します。サーバーは、このヘッダー情報がリソースの最終変更時刻であるかどうかを確認します。その場合、サーバーは 304 Not Modified 応答コードを含む応答ヘッダーを返し、クライアントのキャッシュからリソースをフェッチして、サーバーの負荷を軽減します。
psr-7 を使用すると、Last-Modified キャッシュを簡単に実装することもできます。コード例:
$response = new Response();
$response = $response
->withHeader('Last-Modified', 'LastModifiedDate');
キャッシュ・制御キャッシュ戦略とは、キャッシュ方法を制御するためにレスポンスヘッダに設定するメソッドです。クライアントのリクエストが減り、サーバーの負荷が軽減されます。 Cache-Control ヘッダー情報には次のタイプがあります。
以下は、PSR-7 を介して Cache-Control キャッシュ戦略を実装する例です。必要な情報を応答ヘッダーに追加するだけです:
$response = new Response();
$response = $response
->withHeader('Cache-Control', 'max-age=3600');
summary
PSR- 7 は次の情報を提供します。 HTTP リクエストおよびレスポンス メッセージを作成および処理するための標準化されたソリューション。効率的な HTTP キャッシュを実現するために不可欠です。 PSR-7 を使用すると、ETag キャッシュ、Last-Modified キャッシュ、および Cache-Control キャッシュ戦略を簡単に実装できます。 PHP 8.0 を使用して Web アプリケーションを構築していて、効率的な HTTP キャッシュを実装する必要がある場合は、PSR-7 を試してみてください。
以上がPHP8.0 の HTTP キャッシュ ライブラリ: PSR-7の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。