If-Modified-Since
使い方
If-Modified-Since ヘッダーは、リソースの更新日時に基づくキャッシュの再検証を可能にします。クライアントは、以前のレスポンスで受け取った Last-Modified ヘッダーのタイムスタンプを含めます。指定した日付以降にリソースが変更されていなければ、サーバーはボディのない 304 Not Modified レスポンスを返し、帯域と処理時間を節約します。リソースが変更されていれば、サーバーは更新後のコンテンツとともに通常の 200 レスポンスを送ります。
このヘッダーは GET と HEAD リクエストにのみ適用されます。他のメソッドについては、対になる If-Unmodified-Since ヘッダーが日付ベースの条件付きロジックを提供します。
同じリクエストに If-Modified-Since と If-None-Match の両方が現れる場合、If-None-Match が優先されます。タイムスタンプの分解能は 1 秒であり、サーバーと中間キャッシュの間の時計のずれが例外的なケースを生むため、ETag に基づく比較のほうが信頼できます。
日付の値は Date ヘッダーの仕様で説明される HTTP-date 形式に従います。曜日名、日付、時・分・秒の時刻、その後に GMT が続きます。
注意
Googlebot はクロールのリクエストに、最後にコンテンツをクロールした時刻のタイムスタンプを付けて If-Modified-Since を送信します。変更のないコンテンツに対して 304 を返すサーバーは処理時間とリソースを節約でき、間接的にクロール効率が向上します。また、リクエストに条件付きヘッダーが含まれているかどうかに関わらず、コンテンツが変更されていなければサーバーは Googlebot のあらゆるリクエストに対して先回りして 304 を返しても構いません。Cache-Control レスポンスヘッダーの max-age フィールドに、コンテンツが変更されないと見込まれる秒数を設定しておくと、クローラーがいつ URL を再クロールすべきかを判断しやすくなります。
例
クライアントがキャッシュ済みのリソースを再検証します。2022 年 6 月 1 日 08:00 GMT 以降にリソースが変更されていなければ、サーバーは 304 Not Modified を返します。変更されていれば、サーバーは更新後のリソース全体を送ります。
If-Modified-Since: Wed, 01 Jun 2022 08:00:00 GMT
前のレスポンスの Last-Modified と組み合わせた条件付きリクエストです。クライアントは更新日時を保存し、同じリソースへの次のリクエストでその更新日時を送信します。
Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT
次のリクエストでは次のようになります。
If-Modified-Since: Wed, 01 Jun 2022 08:00:00 GMT
注意
SEO とキャッシュに関する支援については、元 Google の SEO コンサルタント Search Brothers にご相談ください。