マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

キャッシュ・コントロールのHTTPヘッダ

使い方

キャッシュを制御する

HTTP/1.1では、Cache-Controlヘッダを使用する。
HTTP/1.0では、Pragma: no-cacheヘッダを使用する。

Cache-Control: no-store

どのキャッシュもレスポンスを保存してはイケナイ。

Cache-Control: no-cache

キャッシュをしてもいいが、キャッシュを使用する際、検証を行う。

Cache-Control: public

  • どのキャッシュでもレスポンスを保存できる。
  • 通常はキャッシュできないページをキャッシュする時に指定。
    • HTTP 認証
    • 200 OK以外

Cache-Control: private

ブラウザのプライベート・キャッシュにのみ保存できる。

有効期限を設定する。

Cache-Control: max-age=XXX

有効期限を設定する(秒)。

Cache-Control: must-revalidate

有効期限を検証する。

鮮度と検証

検証

サーバーが strong validator または weak validator を提供していれば実行できる。

リロード・ボタン

リロード・ボタンを押した場合、再検証が行われる。

must-revalidate

must-revalidateが指定されている場合、再検証が行われる。

検証リクエスト

鮮度

鮮度の寿命をむかえた場合も、検証リクエストが行われる。

max-age=XXXヘッダ

優先される。

Expiresヘッダ

次いで、 優先される。

= Expires - Date

Last-Modifiedヘッダ

次いで、優先される。

= (Date - Last-Modified) / 10

ヘッダ

基本的なヘッダ

Cache-Control

キャッシュ機能に関するディレクティブ

  • Request
    Cache-Control: max-age=<seconds>
    Cache-Control: max-stale[=<seconds>]
    Cache-Control: min-fresh=<seconds>
    Cache-Control: no-cache
    Cache-Control: no-store
    Cache-Control: no-transform
    Cache-Control: only-if-cached
  • Response
    Cache-Control: must-revalidate
    Cache-Control: no-cache
    Cache-Control: no-store
    Cache-Control: no-transform
    Cache-Control: public
    Cache-Control: private
    Cache-Control: proxy-revalidate
    Cache-Control: max-age=<seconds>
    Cache-Control: s-maxage=<seconds>

Age

プロキシーのキャッシュに入ってからの経過時間(秒)

Expires

レスポンスが陳腐化すると考えられる日時を表す。

Pragma: no-cache

Cache-Controlヘッダが未実装である
HTTP/1.0 キャッシュとの後方互換性

Clear-Site-Data

サイトの閲覧データ (クッキー、ストレージ、キャッシュ等) を消去

Warning

起こりうる問題に関する一般警告情報。

関連するヘッダ

ETag

  • 一意な文字列であり、リソースのバージョンを識別
  • If-MatchやIf-None-Matchで、この値を使用する。

Date

メッセージを生成した日時を表す。

Last-Modified

  • リソースが最後に変更された日時を表す。
  • If-Unmodified-SinceやIf-Modified-Sinceで、この値を使用する。

ETagより正確さは低いが、環境によっては計算が容易

Vary

  • 指定したヘッダの内容ごとにキャッシュを分ける必要があることを伝える。
  • 「Vary: User-Agent」で、User-Agent毎に別のキャッシュを作るなどできる。

検証リクエスト (INM / IMS)

If-None-Match (INM)

  • strong validator
  • 保存されたリソースが指定したETagのいずれかに一致しない場合。

If-Modified-Since (IMS)

  • weak validator
  • エンティティが指定した日時より後に変更されている場合。

参考

MDN

設定例(Open 棟梁 Wiki)

HTTPキャッシュのコントロール(開発基盤部会 Wiki)


Tags: :IT国際標準, :通信技術, :IIS, :.NET開発, :.NET Core, :ASP.NET, :ASP.NET MVC


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-04-01 (木) 18:42:51 (20d)