株式会社エスロジカル
株式会社エスロジカル
SSL証明書(3,300円/1年~ DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HTTPプロトコル:If-Modified-Sinceヘッダ

技術ドキュメント目次 -> HTTPプロトコル -> If-Modified-Sinceヘッダ

本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。

サイフにやさしいSSL証明書
【低価格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プロトコル についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。