<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <dfn><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code></dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>に含まれる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>の最終変更日時を表します。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <strong><cite xml:lang="en">RFC 7232 - Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</cite> (<time>2014-09-11 10:02:44 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7232#section-2.2">https://tools.ietf.org/html/rfc7232#section-2.2</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <cite xml:lang="en">RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</cite> (<time>2014-09-21 17:04:59 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc4918#section-8.6">http://tools.ietf.org/html/rfc4918#section-8.6</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <cite xml:lang="en">RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</cite> (<time>2014-09-21 17:04:59 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc4918#section-8.8">http://tools.ietf.org/html/rfc4918#section-8.8</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <cite xml:lang="en">RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</cite> (<time>2014-09-21 17:04:59 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc4918#section-15">http://tools.ietf.org/html/rfc4918#section-15</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <cite xml:lang="en">RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</cite> (<time>2014-09-21 17:04:59 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc4918#section-15.7">http://tools.ietf.org/html/rfc4918#section-15.7</anchor-external></li></ul></li></ul></refs></section><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の処理の完了の時点において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">選択された表現</anchor>が最後に変更されたと信ずる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日時</anchor>を表します
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> 何をもって最終変更日時とするかは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>の判断に委ねられるところであり、
意味的には若干の曖昧性があります。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>として使う
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">静的ファイル</anchor>を提供する) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">更新日時</anchor>を使うのが普通です。
しかし動的に生成される場合、複数の情報源 (データベース等) のデータを組み合わせて<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を作成することが多く、
何をもって最終変更日時とするべきかは定かではありません。その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>の作成の時刻
(つまり <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> と同じ時刻) かもしれませんが、
それならそれを明示しても意味が無い場合もあるかもしれません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> 例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">広告</anchor>を差し込んで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>とする場合は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>の更新日時を使うべきで、差し込んだ日時を使うべきではないかもしれません。
しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>がその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">広告</anchor>が当該ページの重要なコンテンツを形成するとみなすなら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">広告</anchor>の新しい方の日時を使うべきかもしれません。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> 何が最終変更日時か<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>にとっても明確でない時や、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> と同じにするしかなく、それには意味が無いと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>が考えるときは、
省略するべきでしょう。本ヘッダーは必須ではありません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> 例えばデータベースから無作為に選択した内容を表示するときは、
本ヘッダーは省略した方が良いかもしれません。</p></example></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値は、
<code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP-date</anchor></code> です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p><figure class="railroad"><ul><li><code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP-date</anchor></code></li></ul></figure></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">選択された表現</anchor>の最終修正日時が合理的かつ一貫的に決定できるなら、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> を送信する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。
その値はできるだけ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>の <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">生成</anchor>する時刻の近くの時点で得る<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>はいくつかの部分を組み合わせて構成されることがよくありますが、
その場合それらのうちで最も直近に変更されたものの日時が最終修正日時となるのが普通です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時計</anchor>を持つ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>は、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> より後の
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> を送信しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタデータ</anchor>によると<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時計</anchor>よりも後の最終修正日時となるような場合には、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> の値で置き換えなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検証</anchor>への悪影響を避けるためです <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時計</anchor>を持たない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>は、他の信頼できる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時計</anchor>を持つシステムや<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>が指定している場合を除き、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> を設定しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ETag:</anchor></code> の項も参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 指定してはならない文脈については <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">If-Match:</anchor></code>
の項を参照。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">304</anchor></code> の項も参照。</p></section><section><h1>タイムスタンプ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebDAV</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本体</anchor>や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> が変わっていないなら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タイムスタンプ</anchor>を変える<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきではありません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebDAV</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>は、 (<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">COPY</anchor></code> や <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MOVE</anchor></code>
などの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を操作する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メソッド</anchor>の結果であろうと、) <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> 
が返すであろうものが変わる度に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タイムスタンプ</anchor>を (その精度内で) 
変更しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;33</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> 場合によっては、移動・複製した範囲に含まれる複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">タイムスタンプ</anchor>を更新しないといけないかもしれません <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;33</anchor-internal></src>。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> 移動でタイムスタンプが更新されるのは必ずしも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の意図 (や多くの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>の実装方法) ではない気がしますが...</comment-p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強い検証子</anchor>か<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">弱い検証子</anchor>かは、
次のように決定できます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src>。 <figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>が現在の実際の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検証子</anchor>と比較する場合は、
当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>は元の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検証子</anchor>で示された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秒</anchor>に2度変更されていないと断言できるなら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強い検証子</anchor>です。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>項目を有しており、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検証子</anchor>を <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">If-Modified-Since:</anchor></code>、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">If-Unmodified-Since:</anchor></code>、<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">If-Range:</anchor></code>
に指定しようとする場合で、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>に <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code>
が含まれており、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> が
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> より60秒<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>前の場合には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強い検証子</anchor>です。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間キャッシュ</anchor>が当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>項目を有しており、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">検証子</anchor>と比較する場合で、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>に <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code>
が含まれており、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> が
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> より60秒<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>前の場合には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">強い検証子</anchor>です。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> それ以外の場合、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">弱い検証子</anchor>です。</li></ol></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> この判定方法は、もし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>が同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秒</anchor>に2回異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を返していて、
そのどちらも同じ <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> の値だったとすると、
少なくても一方の <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code> は <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code>
と一致するはず、という性質によっています。60秒としているのは <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date:</anchor></code>
と <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> が異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">時計</anchor>から得られた場合などを想定しており、
短すぎると考えるならより長くとっても構いません。 <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ETag:</anchor></code> の項も参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発見的満期時刻</anchor>の決定にも用いられます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">発見的満期時刻</anchor>を参照。</comment-p></section><section><h1><code class="URI" xml:lang="en">DAV:getlastmodified</code> 特性 (WebDAV)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <dfn><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DAV:getlastmodified</anchor></code></dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特性</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">accept header</anchor> なしで <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> した場合に返されるであろう
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値を表します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> 値は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPの日時形式</anchor>です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor> が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>に含まれる場合でも、
値には含める<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきではありません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;37</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">保護特性</anchor>である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきです</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。
これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>の適切な動作や <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified</anchor></code> 
の値に依存する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>があるかもしれないからです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">COPY</anchor></code> や <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MOVE</anchor></code> の後の値は、
終点資源の最終修正日時により決まります。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> しかし実装によっては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code>
の値が変わるべき時であっても、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>の日時を使っているため、
変化しないこともあります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified</anchor></code> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本体</anchor>の変更のみを反映する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べき</strong></anchor>であり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特性</anchor>のみの変更では変更する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">べきではありません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。
これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>が既存の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">本体</anchor>を上書きするべきかどうかの判断に
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified</anchor></code> を使うことがあるからです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebDAV</anchor> に従う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor>が <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GET</anchor></code> への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>で
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を返す場合は、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DAV:getlastmodified</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特性</anchor>を定義しなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;38</anchor-internal></src>。</p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <code class="HTTP">Last-Modified:</code> 欄は HTTP では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体頭欄</anchor>に分類されています。
ですから、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>でも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>でも、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージ</anchor>が
(<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HEAD</anchor></code> のように一部省略されている場合も含めて)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>を含んでいるのなら使えるように思えます。</p><p>しかし、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1945</anchor> で <q a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="urn:ietf:rfc:1945">sender</q>
とされていたところが、わざわざ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2068</anchor> 以後は
<q a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="urn:ietf:rfc:2068">origin server</q> に直されていて、
要求で使えるような気配がまったくありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PUT</anchor></code> や <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">POST</anchor></code>
で実体を鯖に送る時には使えないのでしょうか。
(<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Disposition</anchor></code> でも使えというのでしょうか?)</p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> RFC 1945 (HTTP/1.0) 10.10; RFC 2068・2616 (HTTP/1.1) 14.29 Last-Modified</figcaption><blockquote><p>The Last-Modified entity-header field indicates the date and time at
which the <del>sender</del> <ins>origin server</ins> believes the <del>resource</del> <ins>variant</ins> was last modified. <del>The exact semantics of this field are defined in terms of how the recipient should interpret it:  if the recipient has a copy of this resource which is older than the date given by the Last-Modified field, that copy should be considered stale.</del></p></blockquote><p><code class="HTTP">Last-Modified</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体頭欄</anchor>は、
その<del><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源</anchor></del><ins><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変種</anchor></ins>が最後に修正された日時と<del><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">送信者</anchor></del><ins><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起点鯖</anchor></ins>が信ずるところのものを示します。<del>この欄の正確な意味は、受信者がこれをどう解釈するべきかによって定義します。受信者がこの資源の複製を持っていて、それが <code class="HTTP">Last-Modified</code> 欄に与えられた日付よりも古ければ、その複製は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">腐敗</anchor>していると考えるべきです。</del></p><blockquote><ul><li>Last-Modified  = &quot;Last-Modified&quot; &quot;:&quot; HTTP-date</li></ul></blockquote><blockquote><p>An example of its use is</p></blockquote><p>使用例:</p><blockquote><ul><li><samp class="HTTP">Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT</samp></li></ul></blockquote><blockquote><p>The exact meaning of this header field depends on the implementation
of the <del>sender</del> <ins>origin server</ins> and the nature of the original resource. For
files, it may be just the file system last-modified time. For entities
with dynamically included parts, it may be the most recent of the set of
last-modify times for its component parts. For database gateways, it
may be the last-update time<ins> </ins>stamp of the record. For virtual objects,
it may be the last time the internal state changed.</p></blockquote><p>この頭欄の正確な意味は、<del>送信者</del><ins>起点鯖</ins>の実装と、
元の資源の性質に依存します。
元が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル</anchor>であれば、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル・システム</anchor>の最終修正時刻になるかもしれません。
動的に取り込まれる部分を含む実体では、その構成部分の最終修正時刻のうちで一番新しいものであるかもしれません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データベース</anchor>関門では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">記録</anchor>の最終更新時刻印かもしれません。
仮想物体では、内部状態が最後に変更された時刻かもしれません。</p><blockquote><p>An origin server <del>must not</del> <ins>MUST NOT</ins> send a Last-Modified date which is later
than the server's time of message origination. In such cases, where
the resource's last modification would indicate some time in the
future, the server <del>must</del> <ins>MUST</ins> replace that date with the message
origination date. <ins>An origin server <del>should</del> <ins>SHOULD</ins> obtain the Last-Modified value of the entity as close as possible to the time that it generates the Date value of its response. This allows a recipient to make an accurate assessment of the entity's modification time, especially if the entity changes near the time that the response is generated.</ins></p></blockquote><p>起点鯖は、メッセージを生成する時点の時刻より後の日付を <code class="HTTP">Last-Modified</code>
として送っては<strong>なりません</strong>。そうなる場合、
つまり資源の最終修正が将来になってしまうような場合は、
メッセージの生成の日付を <code class="HTTP">Last-Modified</code> 
時刻としなければ<strong>なりません</strong>。<ins>起点鯖は、応答の <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Date</anchor></code> 値を生成する時刻とできる限り近い時刻に実体の <code class="HTTP">Last-Modified</code> 値を得る<strong>べきです</strong>。そうすることで、たとえその実体が応答を生成した時刻の前後に変更されていたとしても、受信者が実体の修正時刻を正確に査定できます。</ins></p><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml">訳注: <code class="HTTP">Last-Modified</code> 値決定は <code class="HTTP">Date</code>
決定時刻に近づけるよりも、対象となる実体そのものを生成 (取得)
する時刻に近づけるべきではないでしょうか。 (もちろん、
実体生成はできる限り <code class="HTTP">Date</code> 決定に近づけるべきですが、
現実には必ずしもそうできる場合ばかりではないでしょう。)</p></insert><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>HTTP/1.1 servers SHOULD send Last-Modified whenever feasible.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">HTTP/1.1 鯖は、 <code class="HTTP">Last-Modified</code>
を可能であればいつでも送る<strong>べきです</strong>。</p></insert><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml">訳注: 注記なき修正部は RFC 1945→2068 の差分。</p></insert></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> RFC 2326 (RTSP/1.0) 12.24 Last-Modified</figcaption><blockquote><p>The Last-Modified entity-header field indicates the date and time at
which the origin server believes the presentation description or
media stream was last modified. See [H14.29]. For the methods
DESCRIBE or ANNOUNCE, the header field indicates the last
modification date and time of the description, for SETUP that of the
media stream.</p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <code class="RTSP">Last-Modified</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体頭欄</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現記述</anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体流</anchor>が最後に修正されたと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起点鯖</anchor>の信ずる日時を示します。
<code class="RTSP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DESCRIBE</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メソッド</anchor>や <code class="RTSP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ANNOUNCE</anchor></code>
メソッドでは、記述の最終修正日時を表します。
<code class="RTSP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SETUP</anchor></code> メソッドでは、媒体流の再修正日時を表します。</p></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end>
<cite>HTML5 IRC logs: freenode / #whatwg / 20070626</cite> (<time>2007-06-26 22:14:23 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://krijnhoetmer.nl/irc-logs/whatwg/20070626#l-151">http://krijnhoetmer.nl/irc-logs/whatwg/20070626#l-151</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-06-26 13:17:00 +00:00</weak>)</p></section><section><h1>実装</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">静的</anchor>にデータを供給する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイルシステム</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最終修正日時</anchor>を <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code>
に設定するのが普通です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>で動的に生成した内容を返す場合には、生成する内容の種類や情報源により、
また実装に用いられている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラミング言語</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレームワーク</anchor>にもよりますが、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> が指定されていることはそれほど多くはありません。
そのため<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</anchor>のキャッシュが有効に作用するであろう場面でも、
毎回<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>へのアクセスが発生することがよくあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>か指定した値を再整形して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>として使います。
そのため、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGIスクリプト</anchor>の中には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">曜日</anchor>を適当に指定するなど、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> の再整形を期待して適当な出力をするものもあるようです。</p></section><section><h1>例</h1><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 例 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><pre xmlns="http://www.w3.org/1999/xhtml" class="HTTP code">Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT</pre></example></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor> では <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Document</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>に
<code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lastModified</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDL属性</anchor>があり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Last-Modified:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の値にアクセスできます。</p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <cite xml:lang="en">Dockerfile reference</cite>
(<time>2015-08-20 15:04:05 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.docker.com/reference/builder/">https://docs.docker.com/reference/builder/</anchor-external></figcaption><blockquote><p>If the remote file being retrieved has an HTTP Last-Modified header, the timestamp from that header will be used to set the mtime on the destination file. </p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <cite xml:lang="ja">IPPSを使って文書を安全に印刷する</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://support.brother.co.jp/j/s/support/html/hl3040cn_jp/ug/html/nug/7-15.html">http://support.brother.co.jp/j/s/support/html/hl3040cn_jp/ug/html/nug/7-15.html</anchor-external></figcaption><blockquote><p>Last-Modified: Mon, 01 Jun 2009 08:28:54 GMT,Wed, 26 Feb 2014 03:02:54 GMT</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <cite xml:lang="ja">はてなダイアリーの更新時刻 - World Wide Walker</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">yoosee</anchor>著, <time>2016-03-22 06:36:11 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://yoosee.net/d/archives/2004/01/21/004.html">http://yoosee.net/d/archives/2004/01/21/004.html</anchor-external></figcaption><blockquote><p>五月雨作者のakr さんの日記 によれば、五月雨は基本的に他のアンテナを信用せず、lirs 等の更新情報を元にもう一度自分でチェックに行くらしい。且つコンテンツを GET で fetch するため、HEAD にのみ last-modified フィールドを返すはてなダイアリー 等の場合、更新時刻を正しく取ることが出来ていないようで、ステータスが <strong>[</strong>NoLM<strong>]</strong> になる。はてなダイアリーの 2003-03-24 の記述 を見ると、HEAD だけではなく GET リクエストの場合にも last-modified フィールドを返すようにした、と言っている。だが実際に d.hatena.ne.jp にアクセスしてみてみると、</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <cite>Are Last Modified Headers Recommended? - Google プロダクト フォーラム</cite>
(<time>2017-07-21 15:01:29 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://productforums.google.com/forum/#!category-topic/webmasters/crawling-indexing--ranking/6A_ctOfMoZw">https://productforums.google.com/forum/#!category-topic/webmasters/crawling-indexing--ranking/6A_ctOfMoZw</anchor-external></figcaption><blockquote><p>From my experience, Google doesn't keep track the Last-Modified header of the page but keeps track of the last time googleboot visited the page. So Google comes with a if-modified-since header that is not related to a page Last-Modified header. </p></blockquote></figure></section></body></html>