Restful APIは、HTTPプロトコルの実装に基づくインターフェイススタイルです。リソースの識別子とリソースの状態を分離し、クライアントとサーバーの間の相互作用を容易にします。 Restful APIを使用する過程で、キャッシュはパフォーマンスの最適化に重要な役割を果たします。キャッシュコントロールとは、サーバー上にHTTPヘッダーを設定して、クライアントにキャッシュとキャッシュの使用方法を伝えることを指します。
HTTPヘッダーはHTTP要求と応答の一部であり、応答コンテンツ、キャッシュ制御、認証などに関する情報が含まれています。
Cache-Controlは、http/1.1に追加された新しい命令であり、クライアント要求、プロキシサーバーキャッシュ、サーバーの応答のキャッシュ動作を制御します。一般的な値は次のとおりです。
ETAGは、現在のリソースのステータスを識別するHTTP応答ヘッダーのエンティティタグです。要求すると、クライアントは、以前に取得したETAG値をIF-None-Matchヘッダーを介してサーバーに送信します。サーバーは、ETAG値が一貫しているかどうかを比較します。一貫している場合、304変更されていない応答を返します。クライアントはキャッシュを直接使用できます。
Last-Modifiedは、現在のリソースの最後の変更された時間を識別するHTTP応答ヘッダーの日付時間値です。要求するとき、クライアントは、以前に取得した日付と時刻の値を、ifmodified-sinceヘッダーを介してサーバーに送信します。サーバーは、日付と時刻が一貫しているかどうかを比較します。一貫している場合、304変更されていない応答を返します。クライアントはキャッシュを直接使用できます。
PHPにRESTFUL APIキャッシュコントロールを実装することは、HTTPヘッダー情報を設定することで実現できます。
サーバー上のヘッダー関数を介してキャッシュコントロールヘッダーを設定できます。コードは次のとおりです。
$maxAge = 600; // キャッシュ6002番
header('Cache-Control: public, max-age=' . $maxAge);
上記のコードは、キャッシュコントロールヘッダーを公開に設定し、反応が中間者(プロキシサーバーなど)によってキャッシュされ、最大キャッシュ時間が600秒であることを示します。
サーバー上のヘッダー関数を介して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、ラスト修飾などの重要な情報が含まれています。クライアントは、この情報を使用して、キャッシュ応答を直接使用できるかどうかを判断できます。