キャッシュの保存と利用
Webブラウザ
Webサーバ プロクシサーバ
リソースA リクエストを
発行
レスポンスを 返却 キャッシュに
保存 キャッシュに
保存
キャッシュの保存と利用
Webブラウザ
Webブラウザ
Webサーバ プロクシサーバ
リソースA Webブラウザの
キャッシュを利用
プロクシサーバの
キャッシュを利用
サーバが返す情報
• キャッシュしてもよいか。
• リソースの有効期間。
• リソースの最終更新日時。
• リソースの特定のバージョンを表す、
エンティティタグと呼ばれる文字列。
条件付きGET
• リソースがある日時以降に更新されていれば、
そのリソースを送り返す。
更新されていなければ、ステータスコード 304 ( Not Modified )を返す。
• リソースがあるエンティティタグを持っていな ければ、そのリソースを送り返す。
エンティティタグが同じであれば、ステータス
コード 304 を返す。
Cache-Control ヘッダ
Cache-Control: no-store
フィールド値 意味
no-store
キャッシュしてはいけないCache-Control ヘッダ
Cache-Control: no-store Cache-Control: no-cache
フィールド値 意味
no-store
キャッシュしてはいけないno-cache
キャッシュしてもよいが、再利用するため には、有効性の確認が必要Cache-Control ヘッダ
Cache-Control: no-store Cache-Control: no-cache
Cache-Control: max-age=86400
フィールド値 意味no-store
キャッシュしてはいけないno-cache
キャッシュしてもよいが、再利用するため には、有効性の確認が必要max-age= x
キャッシュが有効である期間(秒)Last-Modified ヘッダ
Last-Modified: Sat, 05 Oct 2013 06:00:00 GMT
Etag ヘッダ
Etag: "abcde"
条件付きGET
• 最終更新日時を条件にする場合
⋯ If-Modified-Since ヘッダ
• エンティティタグを条件にする場合
⋯ If-None-Match ヘッダ
条件付きGET
リクエスト GET /doc HTTP/1.1
レスポンス HTTP/1.1 200 OK
Cache-Control: max-age=86400
Last-Modified: Sat, 05 Oct 2013 06:00:00 GMT Etag: "abcde"
Content-Type: text/html
リクエスト GET /doc HTTP/1.1
If-Modified-Since: Sat, 05 Oct 2013 06:00:00 GMT
レスポンス HTTP/1.1 304 Not Modified
Etag: "abcde"
GET /doc HTTP/1.1
If-Modified-Since: Sat, 05 Oct 2013 06:00:00 GMT
条件付きGET
リクエスト GET /doc HTTP/1.1
レスポンス HTTP/1.1 200 OK
Cache-Control: max-age=86400
Last-Modified: Sat, 05 Oct 2013 06:00:00 GMT Etag: "abcde"
Content-Type: text/html
リクエスト GET /doc HTTP/1.1
If-None-Match: "abcde"
レスポンス HTTP/1.1 304 Not Modified
Etag: "abcde"
条件付きGET
リクエスト
レスポンス HTTP/1.1 200 OK
Last-Modified: Mon, 07 Oct 2013 10:16:10 GMT Etag: "vwxyz"
Content-Type: text/html GET /doc HTTP/1.1
If-Modified-Since: Sat, 05 Oct 2013 06:00:00 GMT
If-None-Match: "abcde"
HTTP認証
Basic認証の動作例
Basic認証
Basic認証
リクエスト レスポンス
GET /secret HTTP/1.1 Host: www.example.ac.jp
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="example.ac.jp secret space"
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
(
以下略)
Basic認証
Basic認証
Basic認証
リクエスト
レスポンス
GET /secret HTTP/1.1 Host: www.example.ac.jp
Authorization: Basic bW9yaW1vdG86YWJjZDEyMzQ=
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="example.ac.jp secret space"
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
(
以下略)
Basic認証
Basic認証
Basic認証
リクエスト
レスポンス
GET /secret HTTP/1.1 Host: www.example.ac.jp
Authorization: Basic bW9yaW1vdG86Y29ycmVjdHB3
ドキュメント内
コンテントネゴシエーション
(ページ 30-53)