現在の位置: ホーム> 最新記事一覧> PHPはRESTFUL APIキャッシュコントロールを実装しています:パフォーマンスを改善するためのベストプラクティス

PHPはRESTFUL APIキャッシュコントロールを実装しています:パフォーマンスを改善するためのベストプラクティス

gitbox 2025-07-30

Restful APIのキャッシュ制御は何ですか

Restful APIは、HTTPプロトコルの実装に基づくインターフェイススタイルです。リソースの識別子とリソースの状態を分離し、クライアントとサーバーの間の相互作用を容易にします。 Restful APIを使用する過程で、キャッシュはパフォーマンスの最適化に重要な役割を果たします。キャッシュコントロールとは、サーバー上にHTTPヘッダーを設定して、クライアントにキャッシュとキャッシュの使用方法を伝えることを指します。

RESTFUL APIキャッシュ制御HTTPヘッダー

HTTPヘッダーはHTTP要求と応答の一部であり、応答コンテンツ、キャッシュ制御、認証などに関する情報が含まれています。

キャッシュ制御

Cache-Controlは、http/1.1に追加された新しい命令であり、クライアント要求、プロキシサーバーキャッシュ、サーバーの応答のキャッシュ動作を制御します。一般的な値は次のとおりです。

  • パブリック:応答は、あらゆる仲介者(プロキシサーバーなど)によってキャッシュできます。
  • プライベート:応答は、単一のユーザー(ブラウザキャッシュなど)によってのみキャッシュできます。
  • ノーキャッシュ:クライアントとすべてのキャッシュが最初にサーバーへのキャッシュの有効性を検証する必要があり、キャッシュを直接使用できないことを意味します。
  • 店なし:反応をキャッシュできないことを意味します。
  • S-Maxage :プロキシサーバーは、最大時代よりも優先度が高い生存時間をキャッシュします。
  • 最大年齢:キャッシュされる応答の時間(秒)。

etag

ETAGは、現在のリソースのステータスを識別するHTTP応答ヘッダーのエンティティタグです。要求すると、クライアントは、以前に取得したETAG値をIF-None-Matchヘッダーを介してサーバーに送信します。サーバーは、ETAG値が一貫しているかどうかを比較します。一貫している場合、304変更されていない応答を返します。クライアントはキャッシュを直接使用できます。

ラスト変更

Last-Modifiedは、現在のリソースの最後の変更された時間を識別するHTTP応答ヘッダーの日付時間値です。要求するとき、クライアントは、以前に取得した日付と時刻の値を、ifmodified-sinceヘッダーを介してサーバーに送信します。サーバーは、日付と時刻が一貫しているかどうかを比較します。一貫している場合、304変更されていない応答を返します。クライアントはキャッシュを直接使用できます。

PHPでRESTFUL APIのキャッシュ制御の実装

PHPにRESTFUL APIキャッシュコントロールを実装することは、HTTPヘッダー情報を設定することで実現できます。

キャッシュコントロールヘッダーのセットアップ

サーバー上のヘッダー関数を介してキャッシュコントロールヘッダーを設定できます。コードは次のとおりです。

 
$maxAge = 600; // キャッシュ6002番
header('Cache-Control: public, max-age=' . $maxAge);

上記のコードは、キャッシュコントロールヘッダーを公開に設定し、反応が中間者(プロキシサーバーなど)によってキャッシュされ、最大キャッシュ時間が600秒であることを示します。

ETAGヘッダーのセットアップ

サーバー上のヘッダー関数を介してETAGヘッダーを設定できます。コードは次のとおりです。

 
$etag = md5($responseBody); // 応答コンテンツに基づいてエンティティタグを生成します
header('ETag: ' . $etag);

上記のコードは、応答コンテンツに基づいてETAGタグを生成し、応答ヘッダーの一部として設定します。

ラスト修飾ヘッダーの設定

ラスト変更されたヘッダーは、サーバー上のヘッダー関数を介して設定でき、コードは次のとおりです。

 
$lastModifiedTime = filemtime($filePath); // ファイルの最後の変更時間を取得します
$lastModified = gmtdate('r', $lastModifiedTime);
header('Last-Modified: ' . $lastModified);

上記のコードは、ファイルの最後の変更時間を取得し、GMT形式に変換してから、応答ヘッダーの一部として設定します。

要約します

RESTFUL APIのキャッシュ制御は、アプリケーションのパフォーマンスを大幅に改善し、サーバーリソースに対するリクエストと応答を減らすことができます。 RESTFUL APIのキャッシュ制御を実装するとき、HTTPヘッダーを設定して、クライアントにキャッシュとキャッシュの使用方法を伝えることができます。 HTTPヘッダーには、キャッシュコントロール、ETAG、ラスト修飾などの重要な情報が含まれています。クライアントは、この情報を使用して、キャッシュ応答を直接使用できるかどうかを判断できます。