「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>HTTPヘッダ]] * 目次 [#n4146912] #contents *概要 [#f870589d] キャッシュ・コントロールのHTTPヘッダ *使い方 [#h5d2cc1c] **キャッシュを制御する [#o2c7f944] HTTP/1.1では、[[Cache-Control>#m362d751]]ヘッダを使用する。~ HTTP/1.0では、[[Pragma: no-cache>#c5c418e7]]ヘッダを使用する。 ***Cache-Control: no-store [#cb3ef2cf] どのキャッシュもレスポンスを保存してはイケナイ。 ***Cache-Control: no-cache [#hf588671] キャッシュをしてもいいが、キャッシュを使用する際、検証を行う。 ***Cache-Control: public [#ffcf6c65] -どのキャッシュでもレスポンスを保存できる。 -通常はキャッシュできないページをキャッシュする時に指定。 --HTTP 認証 --200 OK以外 ***Cache-Control: private [#i27d3063] ブラウザのプライベート・キャッシュにのみ保存できる。 **有効期限を設定する。 [#a816efb1] ***Cache-Control: max-age=XXX [#ja296fc7] 有効期限を設定する(秒)。 ***Cache-Control: must-revalidate [#ndafcd3b] 有効期限を検証する。 *鮮度と検証 [#beaa625f] **検証 [#l344d9a2] サーバーが strong validator または weak validator を提供していれば実行できる。 ***リロード・ボタン [#s3f0affc] リロード・ボタンを押した場合、再検証が行われる。 ***[[must-revalidate>#ndafcd3b]] [#c73c90ce] [[must-revalidate>#ndafcd3b]]が指定されている場合、再検証が行われる。 ***[[検証リクエスト>#x4ed7e82]] [#le5b0086] **鮮度 [#va562621] 鮮度の寿命をむかえた場合も、[[検証リクエスト>#le5b0086]]が行われる。 ***[[max-age=XXX>#ja296fc7]]ヘッダ [#u9d1c1d1] 優先される。 ***[[Expires>#gb9a00f6]]ヘッダ [#g63f4147] 次いで、 優先される。 >= [[Expires>#gb9a00f6]] - [[Date>#x7fbf5bb]] *** [[Last-Modified>#kbd9271b]]ヘッダ [#c26bd4fd] 次いで、優先される。 >= ([[Date>#x7fbf5bb]] - [[Last-Modified>#kbd9271b]]) / 10 *ヘッダ [#reb53fb4] **基本的なヘッダ [#p1f265e5] ***Cache-Control [#m362d751] キャッシュ機能に関するディレクティブ -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 [#cb696e1d] プロキシーのキャッシュに入ってからの経過時間(秒) ***Expires [#gb9a00f6] レスポンスが陳腐化すると考えられる日時を表す。 ***Pragma: no-cache [#c5c418e7] Cache-Controlヘッダが未実装である~ HTTP/1.0 キャッシュとの後方互換性 ***Clear-Site-Data [#yad7d32f] サイトの閲覧データ (クッキー、ストレージ、キャッシュ等) を消去 ***Warning [#m1331abb] 起こりうる問題に関する一般警告情報。 **関連するヘッダ [#a2dc88e5] ***ETag [#p39b8536] -一意な文字列であり、リソースのバージョンを識別 -If-Matchや[[If-None-Match>#d64e623a]]で、この値を使用する。 ***Date [#x7fbf5bb] メッセージを生成した日時を表す。 ***Last-Modified [#kbd9271b] -リソースが最後に変更された日時を表す。 -If-Unmodified-Sinceや[[If-Modified-Since>#kff55242]]で、この値を使用する。 ※ [[ETag>#p39b8536]]より正確さは低いが、環境によっては計算が容易 ***Vary [#c53e8fe5] -指定したヘッダの内容ごとにキャッシュを分ける必要があることを伝える。 -「Vary: User-Agent」で、User-Agent毎に別のキャッシュを作るなどできる。 **検証リクエスト [#x4ed7e82] **検証リクエスト (INM / IMS) [#x4ed7e82] ***If-None-Match [#d64e623a] ***If-None-Match (INM) [#d64e623a] -strong validator -保存されたリソースが指定した[[ETag>#p39b8536]]のいずれかに一致しない場合。 ***If-Modified-Since [#kff55242] ***If-Modified-Since (IMS) [#kff55242] -weak validator -エンティティが指定した日時より後に変更されている場合。 *参考 [#rbd8a4d8] **MDN [#w1861655] -HTTP キャッシュ - HTTP~ https://developer.mozilla.org/ja/docs/Web/HTTP/Caching -HTTP ヘッダー - HTTP > caching~ https://developer.mozilla.org/ja/docs/Web/HTTP/Headers#caching -Cache-Control - HTTP~ https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Cache-Control **[[設定例(Open 棟梁 Wiki)>https://opentouryo.osscons.jp/index.php?%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB]] [#k7a2f25c] **[[HTTPキャッシュのコントロール(開発基盤部会 Wiki)>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?HTTP%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB]] [#h15c48bd] ---- Tags: [[:IT国際標準]], [[:通信技術]], [[:IIS]], [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET MVC]]