HTTPプロトコル:If-Modified-Sinceヘッダ
技術ドキュメント目次 -> HTTPプロトコル -> If-Modified-Sinceヘッダ本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。
◆ If-Modified-Sinceヘッダ
httpのクライアント(IE等のWebブラウザ)は、サーバに対してリクエストを行うとき、If-Modified-Since ヘッダを、
リクエストのヘッダに付加して送信することができます。
If-Modified-Since の付加は必須ではないので、
If-Modified-Since をつけていないリクエストをサーバーに対して行っても、
まったく問題ありませんが、このヘッダは、
下記の条件を満たしている場合、多くのブラウザが標準で送信しています。
クライアント側に目的のコンテンツのキャッシュが存在していて、
なおかつ、クライアントがそのコンテンツが最後に更新された時間がいつであるか
を把握している。
クライアントはすでにキャッシュを持っているので、
次のようなリクエストを行うことが可能になり、
その更新時間の指定を、If-Modified-Since ヘッダで行っています。
「/some.html のコンテンツをください。ただし、x年x月x日x時x分x秒よりも後に
そのコンテンツが更新されていなかった場合は、更新されていない旨だけを
教えてください。更新されていない場合はキャッシュを使ってコンテンツを表示
します。」
もし、コンテンツファイルが更新されていなければ、サーバーはその旨を、
304 Not Modified
というレスポンスヘッダを返すのみで通知できるので、
(コンテンツのデータは返しません。)
トラフィックの削減を行うことができます。
以下、
/some.html というファイルに対してGETのリクエストを行う時に、
If-Modified-Since のヘッダをつけた場合とつけなかった場合とで、
どのような違いがレスポンスに現れるか、telnetコマンドを使って
確認した結果を挙げておきます。
なお、/some.html は、”Sun, 09 Jun 2002 02:24:43 GMT”に更新されています。
If-Modified-Since を付加していないリクエスト
$ telnet localhost 80 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. GET /some.html HTTP/1.0 HTTP/1.1 200 OK Date: Sun, 09 Jun 2002 02:26:27 GMT Server: Apache/1.3.24 (Unix) Last-Modified: Sun, 09 Jun 2002 02:24:43 GMT ETag: "1e5143-3f-3d02bc6b" Accept-Ranges: bytes Content-Length: 63 Connection: close Content-Type: text/html <html> <head></head> <body> This is some.html. </body> </html> Connection closed by foreign host. $ |
If-Modified-Since を付加したリクエスト
$ telnet localhost 80 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. GET /some.html HTTP/1.0 If-Modified-Since: Sun, 09 Jun 2002 02:24:43 GMT HTTP/1.1 304 Not Modified Date: Sun, 09 Jun 2002 02:28:42 GMT Server: Apache/1.3.24 (Unix) Connection: close ETag: "1e5143-3f-3d02bc6b" Connection closed by foreign host. $ |
■ HTTPプロトコル についての他のドキュメント
- Basic認証の動作
- If-Modified-Sinceヘッダ
- httpクライアント(C言語でのサンプル)
- httpクライアント(perlでのサンプル)
- httpのレスポンスコード
■ 他のグループのドキュメント
Apache / Linux / FreeBSD / OpenSSL / Perl / HTTPプロトコル / Jakarta Tomcat / Java / NetBSD / Oracle / PostgreSQL / UNIX の C言語 / UNIX のコマンド / Windows / bind / システム運用TIPS