source: draft-ietf-httpbis/diffs/draft-ietf-httpbis-p4-conditional-16-from-15.diff.html @ 1697

Last change on this file since 1697 was 1401, checked in by julian.reschke@…, 8 years ago

prepare for publication of -16 on Aug 24.

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/html; charset=iso-8859-1
File size: 208.8 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
2<!-- Generated by rfcdiff 1.38: rfcdiff  --> 
3<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional" > -->
4<html> 
5<head> 
6  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
7  <meta http-equiv="Content-Style-Type" content="text/css" /> 
8  <title>Diff: draft-ietf-httpbis-p4-conditional-15.txt - draft-ietf-httpbis-p4-conditional-16.txt</title> 
9  <style type="text/css"> 
10    body    { margin: 0.4ex; margin-right: auto; } 
11    tr      { } 
12    td      { white-space: pre; font-family: monospace; vertical-align: top; font-size: 0.86em;} 
13    th      { font-size: 0.86em; } 
14    .small  { font-size: 0.6em; font-style: italic; font-family: Verdana, Helvetica, sans-serif; } 
15    .left   { background-color: #EEE; } 
16    .right  { background-color: #FFF; } 
17    .diff   { background-color: #CCF; } 
18    .lblock { background-color: #BFB; } 
19    .rblock { background-color: #FF8; } 
20    .insert { background-color: #8FF; } 
21    .delete { background-color: #ACF; } 
22    .void   { background-color: #FFB; } 
23    .cont   { background-color: #EEE; } 
24    .linebr { background-color: #AAA; } 
25    .lineno { color: red; background-color: #FFF; font-size: 0.7em; text-align: right; padding: 0 2px; } 
26    .elipsis{ background-color: #AAA; } 
27    .left .cont { background-color: #DDD; } 
28    .right .cont { background-color: #EEE; } 
29    .lblock .cont { background-color: #9D9; } 
30    .rblock .cont { background-color: #DD6; } 
31    .insert .cont { background-color: #0DD; } 
32    .delete .cont { background-color: #8AD; } 
33    .stats, .stats td, .stats th { background-color: #EEE; padding: 2px 0; } 
34  </style> 
35</head> 
36<body > 
37  <table border="0" cellpadding="0" cellspacing="0"> 
38  <tr bgcolor="orange"><th></th><th>&nbsp;draft-ietf-httpbis-p4-conditional-15.txt&nbsp;</th><th> </th><th>&nbsp;draft-ietf-httpbis-p4-conditional-16.txt&nbsp;</th><th></th></tr> 
39      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
40      <tr><td class="lineno" valign="top"></td><td class="left">HTTPbis Working Group                                   R. Fielding, Ed.</td><td> </td><td class="right">HTTPbis Working Group                                   R. Fielding, Ed.</td><td class="lineno" valign="top"></td></tr>
41      <tr><td class="lineno" valign="top"></td><td class="left">Internet-Draft                                                     Adobe</td><td> </td><td class="right">Internet-Draft                                                     Adobe</td><td class="lineno" valign="top"></td></tr>
42      <tr><td class="lineno" valign="top"></td><td class="left">Obsoletes: 2616 (if approved)                                  J. Gettys</td><td> </td><td class="right">Obsoletes: 2616 (if approved)                                  J. Gettys</td><td class="lineno" valign="top"></td></tr>
43      <tr><td class="lineno" valign="top"></td><td class="left">Intended status: Standards Track                          Alcatel-Lucent</td><td> </td><td class="right">Intended status: Standards Track                          Alcatel-Lucent</td><td class="lineno" valign="top"></td></tr>
44      <tr><td><a name="diff0001" /></td></tr>
45      <tr><td class="lineno" valign="top"></td><td class="lblock">Expires: <span class="delete">January 12, 2012 </span>                                      J. Mogul</td><td> </td><td class="rblock">Expires: <span class="insert">February 25, 2012</span>                                      J. Mogul</td><td class="lineno" valign="top"></td></tr>
46      <tr><td class="lineno" valign="top"></td><td class="left">                                                                      HP</td><td> </td><td class="right">                                                                      HP</td><td class="lineno" valign="top"></td></tr>
47      <tr><td class="lineno" valign="top"></td><td class="left">                                                              H. Frystyk</td><td> </td><td class="right">                                                              H. Frystyk</td><td class="lineno" valign="top"></td></tr>
48      <tr><td class="lineno" valign="top"></td><td class="left">                                                               Microsoft</td><td> </td><td class="right">                                                               Microsoft</td><td class="lineno" valign="top"></td></tr>
49      <tr><td class="lineno" valign="top"></td><td class="left">                                                             L. Masinter</td><td> </td><td class="right">                                                             L. Masinter</td><td class="lineno" valign="top"></td></tr>
50      <tr><td class="lineno" valign="top"></td><td class="left">                                                                   Adobe</td><td> </td><td class="right">                                                                   Adobe</td><td class="lineno" valign="top"></td></tr>
51      <tr><td class="lineno" valign="top"></td><td class="left">                                                                P. Leach</td><td> </td><td class="right">                                                                P. Leach</td><td class="lineno" valign="top"></td></tr>
52      <tr><td class="lineno" valign="top"></td><td class="left">                                                               Microsoft</td><td> </td><td class="right">                                                               Microsoft</td><td class="lineno" valign="top"></td></tr>
53      <tr><td class="lineno" valign="top"></td><td class="left">                                                          T. Berners-Lee</td><td> </td><td class="right">                                                          T. Berners-Lee</td><td class="lineno" valign="top"></td></tr>
54      <tr><td class="lineno" valign="top"></td><td class="left">                                                                 W3C/MIT</td><td> </td><td class="right">                                                                 W3C/MIT</td><td class="lineno" valign="top"></td></tr>
55      <tr><td class="lineno" valign="top"></td><td class="left">                                                           Y. Lafon, Ed.</td><td> </td><td class="right">                                                           Y. Lafon, Ed.</td><td class="lineno" valign="top"></td></tr>
56      <tr><td class="lineno" valign="top"></td><td class="left">                                                                     W3C</td><td> </td><td class="right">                                                                     W3C</td><td class="lineno" valign="top"></td></tr>
57      <tr><td class="lineno" valign="top"></td><td class="left">                                                         J. Reschke, Ed.</td><td> </td><td class="right">                                                         J. Reschke, Ed.</td><td class="lineno" valign="top"></td></tr>
58      <tr><td class="lineno" valign="top"></td><td class="left">                                                              greenbytes</td><td> </td><td class="right">                                                              greenbytes</td><td class="lineno" valign="top"></td></tr>
59      <tr><td><a name="diff0002" /></td></tr>
60      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                         <span class="delete">  July 11</span>, 2011</td><td> </td><td class="rblock">                                                         <span class="insert">August 24</span>, 2011</td><td class="lineno" valign="top"></td></tr>
61      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
62      <tr><td class="lineno" valign="top"></td><td class="left">                 HTTP/1.1, part 4: Conditional Requests</td><td> </td><td class="right">                 HTTP/1.1, part 4: Conditional Requests</td><td class="lineno" valign="top"></td></tr>
63      <tr><td><a name="diff0003" /></td></tr>
64      <tr><td class="lineno" valign="top"></td><td class="lblock">                  draft-ietf-httpbis-p4-conditional-1<span class="delete">5</span></td><td> </td><td class="rblock">                  draft-ietf-httpbis-p4-conditional-1<span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
65      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
66      <tr><td class="lineno" valign="top"></td><td class="left">Abstract</td><td> </td><td class="right">Abstract</td><td class="lineno" valign="top"></td></tr>
67      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
68      <tr><td class="lineno" valign="top"></td><td class="left">   The Hypertext Transfer Protocol (HTTP) is an application-level</td><td> </td><td class="right">   The Hypertext Transfer Protocol (HTTP) is an application-level</td><td class="lineno" valign="top"></td></tr>
69      <tr><td><a name="diff0004" /></td></tr>
70      <tr><td class="lineno" valign="top"></td><td class="lblock">   protocol for distributed, collaborative, hyper<span class="delete">media</span> information</td><td> </td><td class="rblock">   protocol for distributed, collaborative, hyper<span class="insert">text</span> information</td><td class="lineno" valign="top"></td></tr>
71      <tr><td class="lineno" valign="top"></td><td class="left">   systems.  HTTP has been in use by the World Wide Web global</td><td> </td><td class="right">   systems.  HTTP has been in use by the World Wide Web global</td><td class="lineno" valign="top"></td></tr>
72      <tr><td class="lineno" valign="top"></td><td class="left">   information initiative since 1990.  This document is Part 4 of the</td><td> </td><td class="right">   information initiative since 1990.  This document is Part 4 of the</td><td class="lineno" valign="top"></td></tr>
73      <tr><td class="lineno" valign="top"></td><td class="left">   seven-part specification that defines the protocol referred to as</td><td> </td><td class="right">   seven-part specification that defines the protocol referred to as</td><td class="lineno" valign="top"></td></tr>
74      <tr><td><a name="diff0005" /></td></tr>
75      <tr><td class="lineno" valign="top"></td><td class="lblock">   "HTTP/1.1" and, taken together, obsoletes RFC 2616.  Part 4 defines</td><td> </td><td class="rblock">   "HTTP/1.1" and, taken together, obsoletes RFC 2616.</td><td class="lineno" valign="top"></td></tr>
76      <tr><td class="lineno" valign="top"></td><td class="lblock">   request header fields for indicating conditional requests and the</td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
77      <tr><td class="lineno" valign="top"></td><td class="lblock">   rules for constructing responses to those requests.</td><td> </td><td class="rblock">   Part 4 defines request header fields for indicating conditional</td><td class="lineno" valign="top"></td></tr>
78      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   requests and the rules for constructing responses to those requests.</td><td class="lineno" valign="top"></td></tr>
79      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
80      <tr><td class="lineno" valign="top"></td><td class="left">Editorial Note (To be removed by RFC Editor)</td><td> </td><td class="right">Editorial Note (To be removed by RFC Editor)</td><td class="lineno" valign="top"></td></tr>
81      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
82      <tr><td class="lineno" valign="top"></td><td class="left">   Discussion of this draft should take place on the HTTPBIS working</td><td> </td><td class="right">   Discussion of this draft should take place on the HTTPBIS working</td><td class="lineno" valign="top"></td></tr>
83      <tr><td class="lineno" valign="top"></td><td class="left">   group mailing list (ietf-http-wg@w3.org), which is archived at</td><td> </td><td class="right">   group mailing list (ietf-http-wg@w3.org), which is archived at</td><td class="lineno" valign="top"></td></tr>
84      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;http://lists.w3.org/Archives/Public/ietf-http-wg/&gt;.</td><td> </td><td class="right">   &lt;http://lists.w3.org/Archives/Public/ietf-http-wg/&gt;.</td><td class="lineno" valign="top"></td></tr>
85      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
86      <tr><td class="lineno" valign="top"></td><td class="left">   The current issues list is at</td><td> </td><td class="right">   The current issues list is at</td><td class="lineno" valign="top"></td></tr>
87      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;http://tools.ietf.org/wg/httpbis/trac/report/3&gt; and related</td><td> </td><td class="right">   &lt;http://tools.ietf.org/wg/httpbis/trac/report/3&gt; and related</td><td class="lineno" valign="top"></td></tr>
88      <tr><td class="lineno" valign="top"></td><td class="left">   documents (including fancy diffs) can be found at</td><td> </td><td class="right">   documents (including fancy diffs) can be found at</td><td class="lineno" valign="top"></td></tr>
89      <tr><td class="lineno" valign="top"></td><td class="left">   &lt;http://tools.ietf.org/wg/httpbis/&gt;.</td><td> </td><td class="right">   &lt;http://tools.ietf.org/wg/httpbis/&gt;.</td><td class="lineno" valign="top"></td></tr>
90      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
91      <tr><td><a name="diff0006" /></td></tr>
92      <tr><td class="lineno" valign="top"></td><td class="lblock">   The changes in this draft are summarized in Appendix C.1<span class="delete">6</span>.</td><td> </td><td class="rblock">   The changes in this draft are summarized in Appendix C.1<span class="insert">7</span>.</td><td class="lineno" valign="top"></td></tr>
93      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
94      <tr><td class="lineno" valign="top"></td><td class="left">Status of This Memo</td><td> </td><td class="right">Status of This Memo</td><td class="lineno" valign="top"></td></tr>
95      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
96      <tr><td class="lineno" valign="top"></td><td class="left">   This Internet-Draft is submitted in full conformance with the</td><td> </td><td class="right">   This Internet-Draft is submitted in full conformance with the</td><td class="lineno" valign="top"></td></tr>
97      <tr><td class="lineno" valign="top"></td><td class="left">   provisions of BCP 78 and BCP 79.</td><td> </td><td class="right">   provisions of BCP 78 and BCP 79.</td><td class="lineno" valign="top"></td></tr>
98      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
99      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are working documents of the Internet Engineering</td><td> </td><td class="right">   Internet-Drafts are working documents of the Internet Engineering</td><td class="lineno" valign="top"></td></tr>
100      <tr><td class="lineno" valign="top"></td><td class="left">   Task Force (IETF).  Note that other groups may also distribute</td><td> </td><td class="right">   Task Force (IETF).  Note that other groups may also distribute</td><td class="lineno" valign="top"></td></tr>
101      <tr><td class="lineno" valign="top"></td><td class="left">   working documents as Internet-Drafts.  The list of current Internet-</td><td> </td><td class="right">   working documents as Internet-Drafts.  The list of current Internet-</td><td class="lineno" valign="top"></td></tr>
102      <tr><td class="lineno" valign="top"></td><td class="left">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td> </td><td class="right">   Drafts is at http://datatracker.ietf.org/drafts/current/.</td><td class="lineno" valign="top"></td></tr>
103      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
104      <tr><td class="lineno" valign="top"></td><td class="left">   Internet-Drafts are draft documents valid for a maximum of six months</td><td> </td><td class="right">   Internet-Drafts are draft documents valid for a maximum of six months</td><td class="lineno" valign="top"></td></tr>
105      <tr><td class="lineno" valign="top"></td><td class="left">   and may be updated, replaced, or obsoleted by other documents at any</td><td> </td><td class="right">   and may be updated, replaced, or obsoleted by other documents at any</td><td class="lineno" valign="top"></td></tr>
106      <tr><td class="lineno" valign="top"></td><td class="left">   time.  It is inappropriate to use Internet-Drafts as reference</td><td> </td><td class="right">   time.  It is inappropriate to use Internet-Drafts as reference</td><td class="lineno" valign="top"></td></tr>
107      <tr><td class="lineno" valign="top"></td><td class="left">   material or to cite them other than as "work in progress."</td><td> </td><td class="right">   material or to cite them other than as "work in progress."</td><td class="lineno" valign="top"></td></tr>
108      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
109      <tr><td><a name="diff0007" /></td></tr>
110      <tr><td class="lineno" valign="top"></td><td class="lblock">   This Internet-Draft will expire on <span class="delete">January 12</span>, 2012.</td><td> </td><td class="rblock">   This Internet-Draft will expire on <span class="insert">February 25</span>, 2012.</td><td class="lineno" valign="top"></td></tr>
111      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
112      <tr><td class="lineno" valign="top"></td><td class="left">Copyright Notice</td><td> </td><td class="right">Copyright Notice</td><td class="lineno" valign="top"></td></tr>
113      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
114      <tr><td class="lineno" valign="top"></td><td class="left">   Copyright (c) 2011 IETF Trust and the persons identified as the</td><td> </td><td class="right">   Copyright (c) 2011 IETF Trust and the persons identified as the</td><td class="lineno" valign="top"></td></tr>
115      <tr><td class="lineno" valign="top"></td><td class="left">   document authors.  All rights reserved.</td><td> </td><td class="right">   document authors.  All rights reserved.</td><td class="lineno" valign="top"></td></tr>
116      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
117      <tr><td class="lineno" valign="top"></td><td class="left">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td> </td><td class="right">   This document is subject to BCP 78 and the IETF Trust's Legal</td><td class="lineno" valign="top"></td></tr>
118      <tr><td class="lineno" valign="top"></td><td class="left">   Provisions Relating to IETF Documents</td><td> </td><td class="right">   Provisions Relating to IETF Documents</td><td class="lineno" valign="top"></td></tr>
119      <tr><td class="lineno" valign="top"></td><td class="left">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td> </td><td class="right">   (http://trustee.ietf.org/license-info) in effect on the date of</td><td class="lineno" valign="top"></td></tr>
120      <tr><td class="lineno" valign="top"></td><td class="left">   publication of this document.  Please review these documents</td><td> </td><td class="right">   publication of this document.  Please review these documents</td><td class="lineno" valign="top"></td></tr>
121      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
122      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 3, line 5</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 3, line 5</em></th><td></td></tr>
123      <tr><td class="lineno" valign="top"></td><td class="left">   outside the IETF Standards Process, and derivative works of it may</td><td> </td><td class="right">   outside the IETF Standards Process, and derivative works of it may</td><td class="lineno" valign="top"></td></tr>
124      <tr><td class="lineno" valign="top"></td><td class="left">   not be created outside the IETF Standards Process, except to format</td><td> </td><td class="right">   not be created outside the IETF Standards Process, except to format</td><td class="lineno" valign="top"></td></tr>
125      <tr><td class="lineno" valign="top"></td><td class="left">   it for publication as an RFC or to translate it into languages other</td><td> </td><td class="right">   it for publication as an RFC or to translate it into languages other</td><td class="lineno" valign="top"></td></tr>
126      <tr><td class="lineno" valign="top"></td><td class="left">   than English.</td><td> </td><td class="right">   than English.</td><td class="lineno" valign="top"></td></tr>
127      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
128      <tr><td class="lineno" valign="top"></td><td class="left">Table of Contents</td><td> </td><td class="right">Table of Contents</td><td class="lineno" valign="top"></td></tr>
129      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
130      <tr><td class="lineno" valign="top"></td><td class="left">   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  5</td><td> </td><td class="right">   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  5</td><td class="lineno" valign="top"></td></tr>
131      <tr><td class="lineno" valign="top"></td><td class="left">     1.1.  Requirements . . . . . . . . . . . . . . . . . . . . . . .  5</td><td> </td><td class="right">     1.1.  Requirements . . . . . . . . . . . . . . . . . . . . . . .  5</td><td class="lineno" valign="top"></td></tr>
132      <tr><td class="lineno" valign="top"></td><td class="left">     1.2.  Syntax Notation  . . . . . . . . . . . . . . . . . . . . .  6</td><td> </td><td class="right">     1.2.  Syntax Notation  . . . . . . . . . . . . . . . . . . . . .  6</td><td class="lineno" valign="top"></td></tr>
133      <tr><td><a name="diff0008" /></td></tr>
134      <tr><td class="lineno" valign="top"></td><td class="lblock">   2.  <span class="delete">Resource State Metadata (Validators)</span> . . . . . . . . . . . . .  6</td><td> </td><td class="rblock">   2.  <span class="insert">Validators . . . . . . . . . . . . .</span> . . . . . . . . . . . . .  6</td><td class="lineno" valign="top"></td></tr>
135      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.1.  <span class="delete">Last-Modified</span>  . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">6</span></td><td> </td><td class="rblock">     2.1.  <span class="insert">Weak versus Strong</span> . . . . . . . . . . . . . . . . . . . .  <span class="insert">6</span></td><td class="lineno" valign="top"></td></tr>
136      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       2.1.1.  Generation</span> . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">6</span></td><td> </td><td class="rblock"><span class="insert">     2.2.  Last-Modified</span>  . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
137      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       2.1.2.  Comparison</span> . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">7</span></td><td> </td><td class="rblock"><span class="insert">       2.2.1.  Generation</span> . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
138      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     2.2.  ETag</span> . . . . . . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">8</span></td><td> </td><td class="rblock"><span class="insert">       2.2.2.  Comparison</span> . . . . . . . . . . . . . . . . . . . . . .  <span class="insert">9</span></td><td class="lineno" valign="top"></td></tr>
139      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       2.2.1.  Generation</span> . . . . . . . . . . . . . . . . . . . . . .  <span class="delete">9</span></td><td> </td><td class="rblock"><span class="insert">     2.3.  ETag</span> . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">10</span></td><td class="lineno" valign="top"></td></tr>
140      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       2.2.2.  Weak versus Strong</span> . . . . . . . . . . . . . . . . . .  <span class="delete">9</span></td><td> </td><td class="rblock"><span class="insert">       2.3.1.  Generation</span> . . . . . . . . . . . . . . . . . . . . <span class="insert">. . 11</span></td><td class="lineno" valign="top"></td></tr>
141      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       2.2.3.</span>  Comparison . . . . . . . . . . . . . . . . . . . . . . 11</td><td> </td><td class="rblock"><span class="insert">       2.3.2.</span>  Comparison . . . . . . . . . . . . . . . . . . . . . . 11</td><td class="lineno" valign="top"></td></tr>
142      <tr><td class="lineno" valign="top"></td><td class="lblock">       <span class="delete">2.2.4.  Rules for When to Use</span> Entity-tags <span class="delete">and</span></td><td> </td><td class="rblock">       <span class="insert">2.3.3.  Example:</span> Entity-tags <span class="insert">varying on Content-Negotiated</span></td><td class="lineno" valign="top"></td></tr>
143      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">               Last-Modified Dates</span>  . . . . . . . . . . . . . . . . . <span class="delete">11</span></td><td> </td><td class="rblock"><span class="insert">               Resources</span>  . . . . . . . . . . . . . . . . . <span class="insert">. . . . . 12</span></td><td class="lineno" valign="top"></td></tr>
144      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       2.2.5.  Example:</span> Entity-tags <span class="delete">varying on Content-Negotiated</span></td><td> </td><td class="rblock"><span class="insert">     2.4.  Rules for When to Use</span> Entity-tags <span class="insert">and Last-Modified</span></td><td class="lineno" valign="top"></td></tr>
145      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">               Resources</span>  . . . . . . . . . . . . . . . . . . . . . . 13</td><td> </td><td class="rblock"><span class="insert">           Dates  . . . .</span> . . . . . . . . . . . . . . . . . . . . . . 13</td><td class="lineno" valign="top"></td></tr>
146      <tr><td class="lineno" valign="top"></td><td class="left">   3.  Precondition Header Fields . . . . . . . . . . . . . . . . . . 14</td><td> </td><td class="right">   3.  Precondition Header Fields . . . . . . . . . . . . . . . . . . 14</td><td class="lineno" valign="top"></td></tr>
147      <tr><td class="lineno" valign="top"></td><td class="left">     3.1.  If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 14</td><td> </td><td class="right">     3.1.  If-Match . . . . . . . . . . . . . . . . . . . . . . . . . 14</td><td class="lineno" valign="top"></td></tr>
148      <tr><td class="lineno" valign="top"></td><td class="left">     3.2.  If-None-Match  . . . . . . . . . . . . . . . . . . . . . . 15</td><td> </td><td class="right">     3.2.  If-None-Match  . . . . . . . . . . . . . . . . . . . . . . 15</td><td class="lineno" valign="top"></td></tr>
149      <tr><td><a name="diff0009" /></td></tr>
150      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.3.  If-Modified-Since  . . . . . . . . . . . . . . . . . . . . 1<span class="delete">6</span></td><td> </td><td class="rblock">     3.3.  If-Modified-Since  . . . . . . . . . . . . . . . . . . . . 1<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
151      <tr><td class="lineno" valign="top"></td><td class="left">     3.4.  If-Unmodified-Since  . . . . . . . . . . . . . . . . . . . 18</td><td> </td><td class="right">     3.4.  If-Unmodified-Since  . . . . . . . . . . . . . . . . . . . 18</td><td class="lineno" valign="top"></td></tr>
152      <tr><td><a name="diff0010" /></td></tr>
153      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.5.  If-Range . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">18</span></td><td> </td><td class="rblock">     3.5.  If-Range . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
154      <tr><td class="lineno" valign="top"></td><td class="lblock">   4.  Status Code Definitions  . . . . . . . . . . . . . . . . . . . <span class="delete">18</span></td><td> </td><td class="rblock">   4.  Status Code Definitions  . . . . . . . . . . . . . . . . . . . <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
155      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.1.  304 Not Modified . . . . . . . . . . . . . . . . . . . . . <span class="delete">18</span></td><td> </td><td class="rblock">     4.1.  304 Not Modified . . . . . . . . . . . . . . . . . . . . . <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
156      <tr><td class="lineno" valign="top"></td><td class="lblock">     4.2.  412 Precondition Failed  . . . . . . . . . . . . . . . . . <span class="delete">19</span></td><td> </td><td class="rblock">     4.2.  412 Precondition Failed  . . . . . . . . . . . . . . . . . <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
157      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . <span class="delete">19</span></td><td> </td><td class="rblock">   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
158      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.1.  Status Code Registration . . . . . . . . . . . . . . . . . <span class="delete">19</span></td><td> </td><td class="rblock">     5.1.  Status Code Registration . . . . . . . . . . . . . . . . . <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
159      <tr><td class="lineno" valign="top"></td><td class="left">     5.2.  Header Field Registration  . . . . . . . . . . . . . . . . 20</td><td> </td><td class="right">     5.2.  Header Field Registration  . . . . . . . . . . . . . . . . 20</td><td class="lineno" valign="top"></td></tr>
160      <tr><td class="lineno" valign="top"></td><td class="left">   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 20</td><td> </td><td class="right">   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 20</td><td class="lineno" valign="top"></td></tr>
161      <tr><td><a name="diff0011" /></td></tr>
162      <tr><td class="lineno" valign="top"></td><td class="lblock">   7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">20</span></td><td> </td><td class="rblock">   7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
163      <tr><td class="lineno" valign="top"></td><td class="lblock">   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">20</span></td><td> </td><td class="rblock">   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
164      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.1.  Normative References . . . . . . . . . . . . . . . . . . . <span class="delete">20</span></td><td> </td><td class="rblock">     8.1.  Normative References . . . . . . . . . . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
165      <tr><td class="lineno" valign="top"></td><td class="left">     8.2.  Informative References . . . . . . . . . . . . . . . . . . 21</td><td> </td><td class="right">     8.2.  Informative References . . . . . . . . . . . . . . . . . . 21</td><td class="lineno" valign="top"></td></tr>
166      <tr><td><a name="diff0012" /></td></tr>
167      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Changes from RFC 2616 . . . . . . . . . . . . . . . . 2<span class="delete">1</span></td><td> </td><td class="rblock">   Appendix A.  Changes from RFC 2616 . . . . . . . . . . . . . . . . 2<span class="insert">2</span></td><td class="lineno" valign="top"></td></tr>
168      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix B.  Collected ABNF  . . . . . . . . . . . . . . . . . . . 22</td><td> </td><td class="right">   Appendix B.  Collected ABNF  . . . . . . . . . . . . . . . . . . . 22</td><td class="lineno" valign="top"></td></tr>
169      <tr><td class="lineno" valign="top"></td><td class="left">   Appendix C.  Change Log (to be removed by RFC Editor before</td><td> </td><td class="right">   Appendix C.  Change Log (to be removed by RFC Editor before</td><td class="lineno" valign="top"></td></tr>
170      <tr><td><a name="diff0013" /></td></tr>
171      <tr><td class="lineno" valign="top"></td><td class="lblock">                publication)  . . . . . . . . . . . . . . . . . . . . <span class="delete">22</span></td><td> </td><td class="rblock">                publication)  . . . . . . . . . . . . . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
172      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.1.  Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . <span class="delete">22</span></td><td> </td><td class="rblock">     C.1.  Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
173      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.2.  Since draft-ietf-httpbis-p4-conditional-00 . . . . . . . . <span class="delete">22</span></td><td> </td><td class="rblock">     C.2.  Since draft-ietf-httpbis-p4-conditional-00 . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
174      <tr><td class="lineno" valign="top"></td><td class="left">     C.3.  Since draft-ietf-httpbis-p4-conditional-01 . . . . . . . . 23</td><td> </td><td class="right">     C.3.  Since draft-ietf-httpbis-p4-conditional-01 . . . . . . . . 23</td><td class="lineno" valign="top"></td></tr>
175      <tr><td class="lineno" valign="top"></td><td class="left">     C.4.  Since draft-ietf-httpbis-p4-conditional-02 . . . . . . . . 23</td><td> </td><td class="right">     C.4.  Since draft-ietf-httpbis-p4-conditional-02 . . . . . . . . 23</td><td class="lineno" valign="top"></td></tr>
176      <tr><td class="lineno" valign="top"></td><td class="left">     C.5.  Since draft-ietf-httpbis-p4-conditional-03 . . . . . . . . 23</td><td> </td><td class="right">     C.5.  Since draft-ietf-httpbis-p4-conditional-03 . . . . . . . . 23</td><td class="lineno" valign="top"></td></tr>
177      <tr><td><a name="diff0014" /></td></tr>
178      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.6.  Since draft-ietf-httpbis-p4-conditional-04 . . . . . . . . 2<span class="delete">3</span></td><td> </td><td class="rblock">     C.6.  Since draft-ietf-httpbis-p4-conditional-04 . . . . . . . . 2<span class="insert">4</span></td><td class="lineno" valign="top"></td></tr>
179      <tr><td class="lineno" valign="top"></td><td class="left">     C.7.  Since draft-ietf-httpbis-p4-conditional-05 . . . . . . . . 24</td><td> </td><td class="right">     C.7.  Since draft-ietf-httpbis-p4-conditional-05 . . . . . . . . 24</td><td class="lineno" valign="top"></td></tr>
180      <tr><td class="lineno" valign="top"></td><td class="left">     C.8.  Since draft-ietf-httpbis-p4-conditional-06 . . . . . . . . 24</td><td> </td><td class="right">     C.8.  Since draft-ietf-httpbis-p4-conditional-06 . . . . . . . . 24</td><td class="lineno" valign="top"></td></tr>
181      <tr><td class="lineno" valign="top"></td><td class="left">     C.9.  Since draft-ietf-httpbis-p4-conditional-07 . . . . . . . . 24</td><td> </td><td class="right">     C.9.  Since draft-ietf-httpbis-p4-conditional-07 . . . . . . . . 24</td><td class="lineno" valign="top"></td></tr>
182      <tr><td class="lineno" valign="top"></td><td class="left">     C.10. Since draft-ietf-httpbis-p4-conditional-08 . . . . . . . . 24</td><td> </td><td class="right">     C.10. Since draft-ietf-httpbis-p4-conditional-08 . . . . . . . . 24</td><td class="lineno" valign="top"></td></tr>
183      <tr><td><a name="diff0015" /></td></tr>
184      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.11. Since draft-ietf-httpbis-p4-conditional-09 . . . . . . . . <span class="delete">24</span></td><td> </td><td class="rblock">     C.11. Since draft-ietf-httpbis-p4-conditional-09 . . . . . . . . <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
185      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.12. Since draft-ietf-httpbis-p4-conditional-10 . . . . . . . . <span class="delete">24</span></td><td> </td><td class="rblock">     C.12. Since draft-ietf-httpbis-p4-conditional-10 . . . . . . . . <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
186      <tr><td class="lineno" valign="top"></td><td class="left">     C.13. Since draft-ietf-httpbis-p4-conditional-11 . . . . . . . . 25</td><td> </td><td class="right">     C.13. Since draft-ietf-httpbis-p4-conditional-11 . . . . . . . . 25</td><td class="lineno" valign="top"></td></tr>
187      <tr><td class="lineno" valign="top"></td><td class="left">     C.14. Since draft-ietf-httpbis-p4-conditional-12 . . . . . . . . 25</td><td> </td><td class="right">     C.14. Since draft-ietf-httpbis-p4-conditional-12 . . . . . . . . 25</td><td class="lineno" valign="top"></td></tr>
188      <tr><td class="lineno" valign="top"></td><td class="left">     C.15. Since draft-ietf-httpbis-p4-conditional-13 . . . . . . . . 25</td><td> </td><td class="right">     C.15. Since draft-ietf-httpbis-p4-conditional-13 . . . . . . . . 25</td><td class="lineno" valign="top"></td></tr>
189      <tr><td><a name="diff0016" /></td></tr>
190      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.16. Since draft-ietf-httpbis-p4-conditional-14 . . . . . . . . <span class="delete">25</span></td><td> </td><td class="rblock">     C.16. Since draft-ietf-httpbis-p4-conditional-14 . . . . . . . . <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
191      <tr><td class="lineno" valign="top"></td><td class="lblock">   Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">25</span></td><td> </td><td class="rblock"><span class="insert">     C.17. Since draft-ietf-httpbis-p4-conditional-15 . . . . . . . . 26</span></td><td class="lineno" valign="top"></td></tr>
192      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
193      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
194      <tr><td class="lineno" valign="top"></td><td class="left">1.  Introduction</td><td> </td><td class="right">1.  Introduction</td><td class="lineno" valign="top"></td></tr>
195      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
196      <tr><td class="lineno" valign="top"></td><td class="left">   This document defines the HTTP/1.1 conditional request mechanisms,</td><td> </td><td class="right">   This document defines the HTTP/1.1 conditional request mechanisms,</td><td class="lineno" valign="top"></td></tr>
197      <tr><td><a name="diff0017" /></td></tr>
198      <tr><td class="lineno" valign="top"></td><td class="lblock">   including both <span class="delete">response</span> metadata <span class="delete">that can be used to indicate or</span></td><td> </td><td class="rblock">   including both metadata <span class="insert">for indicating/observing</span> changes <span class="insert">in</span> resource</td><td class="lineno" valign="top"></td></tr>
199      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   observe</span> changes <span class="delete">to</span> resource <span class="delete">state</span> and request header fields that</td><td> </td><td class="rblock">   <span class="insert">representations</span> and request header fields that specify preconditions</td><td class="lineno" valign="top"></td></tr>
200      <tr><td class="lineno" valign="top"></td><td class="lblock">   specify preconditions <span class="delete">to</span> be checked before performing the <span class="delete">action</span></td><td> </td><td class="rblock">   <span class="insert">on that metadata</span> be checked before performing the request method.</td><td class="lineno" valign="top"></td></tr>
201      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   given by the</span> request method.  Conditional GET requests are the most</td><td> </td><td class="rblock">   Conditional GET requests are the most efficient mechanism for HTTP</td><td class="lineno" valign="top"></td></tr>
202      <tr><td class="lineno" valign="top"></td><td class="lblock">   efficient mechanism for HTTP cache updates [Part6].  Conditionals can</td><td> </td><td class="rblock">   cache updates [Part6].  Conditionals can also be applied to <span class="insert">state-</span></td><td class="lineno" valign="top"></td></tr>
203      <tr><td class="lineno" valign="top"></td><td class="lblock">   also be applied to <span class="delete">state-changing</span> methods, such as PUT and DELETE, to</td><td> </td><td class="rblock"><span class="insert">   changing</span> methods, such as PUT and DELETE, to prevent the "lost</td><td class="lineno" valign="top"></td></tr>
204      <tr><td class="lineno" valign="top"></td><td class="lblock">   prevent the "lost update" problem: one client accidentally</td><td> </td><td class="rblock">   update" problem: one client accidentally overwriting the work of</td><td class="lineno" valign="top"></td></tr>
205      <tr><td class="lineno" valign="top"></td><td class="lblock">   overwriting the work of another client that has been acting in</td><td> </td><td class="rblock">   another client that has been acting in parallel.</td><td class="lineno" valign="top"></td></tr>
206      <tr><td class="lineno" valign="top"></td><td class="lblock">   parallel.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
207      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
208      <tr><td class="lineno" valign="top"></td><td class="left">   Conditional request preconditions are based on the state of the</td><td> </td><td class="right">   Conditional request preconditions are based on the state of the</td><td class="lineno" valign="top"></td></tr>
209      <tr><td class="lineno" valign="top"></td><td class="left">   target resource as a whole (its current value set) or the state as</td><td> </td><td class="right">   target resource as a whole (its current value set) or the state as</td><td class="lineno" valign="top"></td></tr>
210      <tr><td class="lineno" valign="top"></td><td class="left">   observed in a previously obtained representation (one value in that</td><td> </td><td class="right">   observed in a previously obtained representation (one value in that</td><td class="lineno" valign="top"></td></tr>
211      <tr><td class="lineno" valign="top"></td><td class="left">   set).  A resource might have multiple current representations, each</td><td> </td><td class="right">   set).  A resource might have multiple current representations, each</td><td class="lineno" valign="top"></td></tr>
212      <tr><td class="lineno" valign="top"></td><td class="left">   with its own observable state.  The conditional request mechanisms</td><td> </td><td class="right">   with its own observable state.  The conditional request mechanisms</td><td class="lineno" valign="top"></td></tr>
213      <tr><td class="lineno" valign="top"></td><td class="left">   assume that the mapping of requests to corresponding representations</td><td> </td><td class="right">   assume that the mapping of requests to corresponding representations</td><td class="lineno" valign="top"></td></tr>
214      <tr><td class="lineno" valign="top"></td><td class="left">   will be consistent over time if the server intends to take advantage</td><td> </td><td class="right">   will be consistent over time if the server intends to take advantage</td><td class="lineno" valign="top"></td></tr>
215      <tr><td class="lineno" valign="top"></td><td class="left">   of conditionals.  Regardless, if the mapping is inconsistent and the</td><td> </td><td class="right">   of conditionals.  Regardless, if the mapping is inconsistent and the</td><td class="lineno" valign="top"></td></tr>
216      <tr><td class="lineno" valign="top"></td><td class="left">   server is unable to select the appropriate representation, then no</td><td> </td><td class="right">   server is unable to select the appropriate representation, then no</td><td class="lineno" valign="top"></td></tr>
217      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
218      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 6, line 19</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 6, line 19</em></th><td></td></tr>
219      <tr><td class="lineno" valign="top"></td><td class="left">   rule).  Appendix B shows the collected ABNF, with the list rule</td><td> </td><td class="right">   rule).  Appendix B shows the collected ABNF, with the list rule</td><td class="lineno" valign="top"></td></tr>
220      <tr><td class="lineno" valign="top"></td><td class="left">   expanded.</td><td> </td><td class="right">   expanded.</td><td class="lineno" valign="top"></td></tr>
221      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
222      <tr><td class="lineno" valign="top"></td><td class="left">   The following core rules are included by reference, as defined in</td><td> </td><td class="right">   The following core rules are included by reference, as defined in</td><td class="lineno" valign="top"></td></tr>
223      <tr><td class="lineno" valign="top"></td><td class="left">   [RFC5234], Appendix B.1: ALPHA (letters), CR (carriage return), CRLF</td><td> </td><td class="right">   [RFC5234], Appendix B.1: ALPHA (letters), CR (carriage return), CRLF</td><td class="lineno" valign="top"></td></tr>
224      <tr><td class="lineno" valign="top"></td><td class="left">   (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote),</td><td> </td><td class="right">   (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double quote),</td><td class="lineno" valign="top"></td></tr>
225      <tr><td class="lineno" valign="top"></td><td class="left">   HEXDIG (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any 8-bit</td><td> </td><td class="right">   HEXDIG (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any 8-bit</td><td class="lineno" valign="top"></td></tr>
226      <tr><td class="lineno" valign="top"></td><td class="left">   sequence of data), SP (space), VCHAR (any visible USASCII character),</td><td> </td><td class="right">   sequence of data), SP (space), VCHAR (any visible USASCII character),</td><td class="lineno" valign="top"></td></tr>
227      <tr><td class="lineno" valign="top"></td><td class="left">   and WSP (whitespace).</td><td> </td><td class="right">   and WSP (whitespace).</td><td class="lineno" valign="top"></td></tr>
228      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
229      <tr><td><a name="diff0018" /></td></tr>
230      <tr><td class="lineno" valign="top"></td><td class="lblock">   The ABNF rules below are defined in <span class="delete">other parts</span>:</td><td> </td><td class="rblock">   The ABNF rules below are defined in <span class="insert">[Part1]</span>:</td><td class="lineno" valign="top"></td></tr>
231      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
232      <tr><td><a name="diff0019" /></td></tr>
233      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     quoted-string = &lt;quoted-string, defined in [Part1], Section 1.2.2&gt;</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
234      <tr><td class="lineno" valign="top"></td><td class="left">     OWS           = &lt;OWS, defined in [Part1], Section 1.2.2&gt;</td><td> </td><td class="right">     OWS           = &lt;OWS, defined in [Part1], Section 1.2.2&gt;</td><td class="lineno" valign="top"></td></tr>
235      <tr><td><a name="diff0020" /></td></tr>
236      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     quoted-string = &lt;quoted-string, defined in [Part1], Section 3.2.3&gt;</span></td><td class="lineno" valign="top"></td></tr>
237      <tr><td class="lineno" valign="top"></td><td class="left">     HTTP-date     = &lt;HTTP-date, defined in [Part1], Section 6.1&gt;</td><td> </td><td class="right">     HTTP-date     = &lt;HTTP-date, defined in [Part1], Section 6.1&gt;</td><td class="lineno" valign="top"></td></tr>
238      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
239      <tr><td><a name="diff0021" /></td></tr>
240      <tr><td class="lineno" valign="top"></td><td class="lblock">2.  <span class="delete">Resource State Metadata (Validators)</span></td><td> </td><td class="rblock">2.  <span class="insert">Validators</span></td><td class="lineno" valign="top"></td></tr>
241      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
242      <tr><td class="lineno" valign="top"></td><td class="left">   This specification defines two forms of metadata that are commonly</td><td> </td><td class="right">   This specification defines two forms of metadata that are commonly</td><td class="lineno" valign="top"></td></tr>
243      <tr><td class="lineno" valign="top"></td><td class="left">   used to observe resource state and test for preconditions:</td><td> </td><td class="right">   used to observe resource state and test for preconditions:</td><td class="lineno" valign="top"></td></tr>
244      <tr><td class="lineno" valign="top"></td><td class="left">   modification dates and opaque entity tags.  Additional metadata that</td><td> </td><td class="right">   modification dates and opaque entity tags.  Additional metadata that</td><td class="lineno" valign="top"></td></tr>
245      <tr><td class="lineno" valign="top"></td><td class="left">   reflects resource state has been defined by various extensions of</td><td> </td><td class="right">   reflects resource state has been defined by various extensions of</td><td class="lineno" valign="top"></td></tr>
246      <tr><td class="lineno" valign="top"></td><td class="left">   HTTP, such as WebDAV [RFC4918], that are beyond the scope of this</td><td> </td><td class="right">   HTTP, such as WebDAV [RFC4918], that are beyond the scope of this</td><td class="lineno" valign="top"></td></tr>
247      <tr><td class="lineno" valign="top"></td><td class="left">   specification.  A resource metadata value is referred to as a</td><td> </td><td class="right">   specification.  A resource metadata value is referred to as a</td><td class="lineno" valign="top"></td></tr>
248      <tr><td class="lineno" valign="top"></td><td class="left">   "validator" when it is used within a precondition.</td><td> </td><td class="right">   "validator" when it is used within a precondition.</td><td class="lineno" valign="top"></td></tr>
249      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
250      <tr><td><a name="diff0022" /></td></tr>
251      <tr><td class="lineno" valign="top"></td><td class="lblock">2.1.  Last-Modified</td><td> </td><td class="rblock">2.1.  <span class="insert">Weak versus Strong</span></td><td class="lineno" valign="top"></td></tr>
252      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
253      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Validators come in two flavors: strong or weak.  Weak validators are</span></td><td class="lineno" valign="top"></td></tr>
254      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   easy to generate but are far less useful for comparisons.  Strong</span></td><td class="lineno" valign="top"></td></tr>
255      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   validators are ideal for comparisons but can be very difficult (and</span></td><td class="lineno" valign="top"></td></tr>
256      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   occasionally impossible) to generate efficiently.  Rather than impose</span></td><td class="lineno" valign="top"></td></tr>
257      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   that all forms of resource adhere to the same strength of validator,</span></td><td class="lineno" valign="top"></td></tr>
258      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   HTTP exposes the type of validator in use and imposes restrictions on</span></td><td class="lineno" valign="top"></td></tr>
259      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   when weak validators can be used as preconditions.</span></td><td class="lineno" valign="top"></td></tr>
260      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
261      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   A "strong validator" is a representation metadata value that MUST be</span></td><td class="lineno" valign="top"></td></tr>
262      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   changed to a new, previously unused or guaranteed unique, value</span></td><td class="lineno" valign="top"></td></tr>
263      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   whenever a change occurs to the representation data such that a</span></td><td class="lineno" valign="top"></td></tr>
264      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   change would be observable in the payload body of a 200 response to</span></td><td class="lineno" valign="top"></td></tr>
265      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   GET.  A strong validator MAY be changed for other reasons, such as</span></td><td class="lineno" valign="top"></td></tr>
266      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   when a semantically significant part of the representation metadata</span></td><td class="lineno" valign="top"></td></tr>
267      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   is changed (e.g., Content-Type), but it is in the best interests of</span></td><td class="lineno" valign="top"></td></tr>
268      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the origin server to only change the value when it is necessary to</span></td><td class="lineno" valign="top"></td></tr>
269      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   invalidate the stored responses held by remote caches and authoring</span></td><td class="lineno" valign="top"></td></tr>
270      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   tools.  A strong validator MUST be unique across all representations</span></td><td class="lineno" valign="top"></td></tr>
271      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   of a given resource, such that no two representations of that</span></td><td class="lineno" valign="top"></td></tr>
272      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   resource share the same validator unless their payload body would be</span></td><td class="lineno" valign="top"></td></tr>
273      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   identical.</span></td><td class="lineno" valign="top"></td></tr>
274      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
275      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Cache entries might persist for arbitrarily long periods, regardless</span></td><td class="lineno" valign="top"></td></tr>
276      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   of expiration times.  Thus, a cache might attempt to validate an</span></td><td class="lineno" valign="top"></td></tr>
277      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   entry using a validator that it obtained in the distant past.  A</span></td><td class="lineno" valign="top"></td></tr>
278      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   strong validator MUST be unique across all versions of all</span></td><td class="lineno" valign="top"></td></tr>
279      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   representations associated with a particular resource over time.</span></td><td class="lineno" valign="top"></td></tr>
280      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   However, there is no implication of uniqueness across representations</span></td><td class="lineno" valign="top"></td></tr>
281      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   of different resources (i.e., the same strong validator might be in</span></td><td class="lineno" valign="top"></td></tr>
282      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   use for representations of multiple resources at the same time and</span></td><td class="lineno" valign="top"></td></tr>
283      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   does not imply that those representations are equivalent).</span></td><td class="lineno" valign="top"></td></tr>
284      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
285      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   There are a variety of strong validators used in practice.  The best</span></td><td class="lineno" valign="top"></td></tr>
286      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   are based on strict revision control, wherein each change to a</span></td><td class="lineno" valign="top"></td></tr>
287      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   representation always results in a unique node name and revision</span></td><td class="lineno" valign="top"></td></tr>
288      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   identifier being assigned before the representation is made</span></td><td class="lineno" valign="top"></td></tr>
289      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   accessible to GET.  A cryptographic hash function applied to the</span></td><td class="lineno" valign="top"></td></tr>
290      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   representation data is also sufficient if the data is available prior</span></td><td class="lineno" valign="top"></td></tr>
291      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   to the response header fields being sent and the digest does not need</span></td><td class="lineno" valign="top"></td></tr>
292      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   to be recalculated every time a validation request is received.</span></td><td class="lineno" valign="top"></td></tr>
293      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   However, if a resource has distinct representations that differ only</span></td><td class="lineno" valign="top"></td></tr>
294      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   in their metadata, such as might occur with content negotiation over</span></td><td class="lineno" valign="top"></td></tr>
295      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   media types that happen to share the same data format, then a server</span></td><td class="lineno" valign="top"></td></tr>
296      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   SHOULD incorporate additional information in the validator to</span></td><td class="lineno" valign="top"></td></tr>
297      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   distinguish those representations and avoid confusing cache behavior.</span></td><td class="lineno" valign="top"></td></tr>
298      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
299      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   In contrast, a "weak validator" is a representation metadata value</span></td><td class="lineno" valign="top"></td></tr>
300      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   that might not be changed for every change to the representation</span></td><td class="lineno" valign="top"></td></tr>
301      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   data.  This weakness might be due to limitations in how the value is</span></td><td class="lineno" valign="top"></td></tr>
302      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   calculated, such as clock resolution or an inability to ensure</span></td><td class="lineno" valign="top"></td></tr>
303      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   uniqueness for all possible representations of the resource, or due</span></td><td class="lineno" valign="top"></td></tr>
304      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   to a desire by the resource owner to group representations by some</span></td><td class="lineno" valign="top"></td></tr>
305      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   self-determined set of equivalency rather than unique sequences of</span></td><td class="lineno" valign="top"></td></tr>
306      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   data.  A weak entity-tag SHOULD change whenever the origin server</span></td><td class="lineno" valign="top"></td></tr>
307      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   considers prior representations to be unacceptable as a substitute</span></td><td class="lineno" valign="top"></td></tr>
308      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   for the current representation.  In other words, a weak entity-tag</span></td><td class="lineno" valign="top"></td></tr>
309      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   SHOULD change whenever the origin server wants caches to invalidate</span></td><td class="lineno" valign="top"></td></tr>
310      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   old responses.</span></td><td class="lineno" valign="top"></td></tr>
311      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
312      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   For example, the representation of a weather report that changes in</span></td><td class="lineno" valign="top"></td></tr>
313      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   content every second, based on dynamic measurements, might be grouped</span></td><td class="lineno" valign="top"></td></tr>
314      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   into sets of equivalent representations (from the origin server's</span></td><td class="lineno" valign="top"></td></tr>
315      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   perspective) with the same weak validator in order to allow cached</span></td><td class="lineno" valign="top"></td></tr>
316      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   representations to be valid for a reasonable period of time (perhaps</span></td><td class="lineno" valign="top"></td></tr>
317      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   adjusted dynamically based on server load or weather quality).</span></td><td class="lineno" valign="top"></td></tr>
318      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Likewise, a representation's modification time, if defined with only</span></td><td class="lineno" valign="top"></td></tr>
319      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   one-second resolution, might be a weak validator if it is possible</span></td><td class="lineno" valign="top"></td></tr>
320      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   for the representation to be modified twice during a single second</span></td><td class="lineno" valign="top"></td></tr>
321      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   and retrieved between those modifications.</span></td><td class="lineno" valign="top"></td></tr>
322      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
323      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   A "use" of a validator occurs when either a client generates a</span></td><td class="lineno" valign="top"></td></tr>
324      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   request and includes the validator in a precondition or when a server</span></td><td class="lineno" valign="top"></td></tr>
325      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   compares two validators.  Weak validators are only usable in contexts</span></td><td class="lineno" valign="top"></td></tr>
326      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   that do not depend on exact equality of a representation's payload</span></td><td class="lineno" valign="top"></td></tr>
327      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   body.  Strong validators are usable and preferred for all conditional</span></td><td class="lineno" valign="top"></td></tr>
328      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   requests, including cache validation, partial content ranges, and</span></td><td class="lineno" valign="top"></td></tr>
329      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   "lost update" avoidance.</span></td><td class="lineno" valign="top"></td></tr>
330      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
331      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">2.2.</span>  Last-Modified</td><td class="lineno" valign="top"></td></tr>
332      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
333      <tr><td class="lineno" valign="top"></td><td class="left">   The "Last-Modified" header field indicates the date and time at which</td><td> </td><td class="right">   The "Last-Modified" header field indicates the date and time at which</td><td class="lineno" valign="top"></td></tr>
334      <tr><td class="lineno" valign="top"></td><td class="left">   the origin server believes the selected representation was last</td><td> </td><td class="right">   the origin server believes the selected representation was last</td><td class="lineno" valign="top"></td></tr>
335      <tr><td class="lineno" valign="top"></td><td class="left">   modified.</td><td> </td><td class="right">   modified.</td><td class="lineno" valign="top"></td></tr>
336      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
337      <tr><td class="lineno" valign="top"></td><td class="left">     Last-Modified = HTTP-date</td><td> </td><td class="right">     Last-Modified = HTTP-date</td><td class="lineno" valign="top"></td></tr>
338      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
339      <tr><td class="lineno" valign="top"></td><td class="left">   An example of its use is</td><td> </td><td class="right">   An example of its use is</td><td class="lineno" valign="top"></td></tr>
340      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
341      <tr><td class="lineno" valign="top"></td><td class="left">     Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT</td><td> </td><td class="right">     Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT</td><td class="lineno" valign="top"></td></tr>
342      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
343      <tr><td><a name="diff0023" /></td></tr>
344      <tr><td class="lineno" valign="top"></td><td class="lblock">2.<span class="delete">1</span>.1.  Generation</td><td> </td><td class="rblock">2.<span class="insert">2</span>.1.  Generation</td><td class="lineno" valign="top"></td></tr>
345      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
346      <tr><td class="lineno" valign="top"></td><td class="left">   Origin servers SHOULD send Last-Modified for any selected</td><td> </td><td class="right">   Origin servers SHOULD send Last-Modified for any selected</td><td class="lineno" valign="top"></td></tr>
347      <tr><td class="lineno" valign="top"></td><td class="left">   representation for which a last modification date can be reasonably</td><td> </td><td class="right">   representation for which a last modification date can be reasonably</td><td class="lineno" valign="top"></td></tr>
348      <tr><td class="lineno" valign="top"></td><td class="left">   and consistently determined, since its use in conditional requests</td><td> </td><td class="right">   and consistently determined, since its use in conditional requests</td><td class="lineno" valign="top"></td></tr>
349      <tr><td class="lineno" valign="top"></td><td class="left">   and evaluating cache freshness ([Part6]) results in a substantial</td><td> </td><td class="right">   and evaluating cache freshness ([Part6]) results in a substantial</td><td class="lineno" valign="top"></td></tr>
350      <tr><td class="lineno" valign="top"></td><td class="left">   reduction of HTTP traffic on the Internet and can be a significant</td><td> </td><td class="right">   reduction of HTTP traffic on the Internet and can be a significant</td><td class="lineno" valign="top"></td></tr>
351      <tr><td class="lineno" valign="top"></td><td class="left">   factor in improving service scalability and reliability.</td><td> </td><td class="right">   factor in improving service scalability and reliability.</td><td class="lineno" valign="top"></td></tr>
352      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
353      <tr><td class="lineno" valign="top"></td><td class="left">   A representation is typically the sum of many parts behind the</td><td> </td><td class="right">   A representation is typically the sum of many parts behind the</td><td class="lineno" valign="top"></td></tr>
354      <tr><td class="lineno" valign="top"></td><td class="left">   resource interface.  The last-modified time would usually be the most</td><td> </td><td class="right">   resource interface.  The last-modified time would usually be the most</td><td class="lineno" valign="top"></td></tr>
355      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
356      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 7, line 31</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 9, line 15</em></th><td></td></tr>
357      <tr><td class="lineno" valign="top"></td><td class="left">   response is generated.</td><td> </td><td class="right">   response is generated.</td><td class="lineno" valign="top"></td></tr>
358      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
359      <tr><td class="lineno" valign="top"></td><td class="left">   An origin server with a clock MUST NOT send a Last-Modified date that</td><td> </td><td class="right">   An origin server with a clock MUST NOT send a Last-Modified date that</td><td class="lineno" valign="top"></td></tr>
360      <tr><td class="lineno" valign="top"></td><td class="left">   is later than the server's time of message origination (Date).  If</td><td> </td><td class="right">   is later than the server's time of message origination (Date).  If</td><td class="lineno" valign="top"></td></tr>
361      <tr><td class="lineno" valign="top"></td><td class="left">   the last modification time is derived from implementation-specific</td><td> </td><td class="right">   the last modification time is derived from implementation-specific</td><td class="lineno" valign="top"></td></tr>
362      <tr><td class="lineno" valign="top"></td><td class="left">   metadata that evaluates to some time in the future, according to the</td><td> </td><td class="right">   metadata that evaluates to some time in the future, according to the</td><td class="lineno" valign="top"></td></tr>
363      <tr><td class="lineno" valign="top"></td><td class="left">   origin server's clock, then the origin server MUST replace that value</td><td> </td><td class="right">   origin server's clock, then the origin server MUST replace that value</td><td class="lineno" valign="top"></td></tr>
364      <tr><td class="lineno" valign="top"></td><td class="left">   with the message origination date.  This prevents a future</td><td> </td><td class="right">   with the message origination date.  This prevents a future</td><td class="lineno" valign="top"></td></tr>
365      <tr><td class="lineno" valign="top"></td><td class="left">   modification date from having an adverse impact on cache validation.</td><td> </td><td class="right">   modification date from having an adverse impact on cache validation.</td><td class="lineno" valign="top"></td></tr>
366      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
367      <tr><td><a name="diff0024" /></td></tr>
368      <tr><td class="lineno" valign="top"></td><td class="lblock">2.<span class="delete">1</span>.2.  Comparison</td><td> </td><td class="rblock">2.<span class="insert">2</span>.2.  Comparison</td><td class="lineno" valign="top"></td></tr>
369      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
370      <tr><td class="lineno" valign="top"></td><td class="left">   A Last-Modified time, when used as a validator in a request, is</td><td> </td><td class="right">   A Last-Modified time, when used as a validator in a request, is</td><td class="lineno" valign="top"></td></tr>
371      <tr><td class="lineno" valign="top"></td><td class="left">   implicitly weak unless it is possible to deduce that it is strong,</td><td> </td><td class="right">   implicitly weak unless it is possible to deduce that it is strong,</td><td class="lineno" valign="top"></td></tr>
372      <tr><td class="lineno" valign="top"></td><td class="left">   using the following rules:</td><td> </td><td class="right">   using the following rules:</td><td class="lineno" valign="top"></td></tr>
373      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
374      <tr><td class="lineno" valign="top"></td><td class="left">   o  The validator is being compared by an origin server to the actual</td><td> </td><td class="right">   o  The validator is being compared by an origin server to the actual</td><td class="lineno" valign="top"></td></tr>
375      <tr><td class="lineno" valign="top"></td><td class="left">      current validator for the representation and,</td><td> </td><td class="right">      current validator for the representation and,</td><td class="lineno" valign="top"></td></tr>
376      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
377      <tr><td class="lineno" valign="top"></td><td class="left">   o  That origin server reliably knows that the associated</td><td> </td><td class="right">   o  That origin server reliably knows that the associated</td><td class="lineno" valign="top"></td></tr>
378      <tr><td class="lineno" valign="top"></td><td class="left">      representation did not change twice during the second covered by</td><td> </td><td class="right">      representation did not change twice during the second covered by</td><td class="lineno" valign="top"></td></tr>
379      <tr><td class="lineno" valign="top"></td><td class="left">      the presented validator.</td><td> </td><td class="right">      the presented validator.</td><td class="lineno" valign="top"></td></tr>
380      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
381      <tr><td class="lineno" valign="top"></td><td class="left">   or</td><td> </td><td class="right">   or</td><td class="lineno" valign="top"></td></tr>
382      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
383      <tr><td class="lineno" valign="top"></td><td class="left">   o  The validator is about to be used by a client in an If-Modified-</td><td> </td><td class="right">   o  The validator is about to be used by a client in an If-Modified-</td><td class="lineno" valign="top"></td></tr>
384      <tr><td><a name="diff0025" /></td></tr>
385      <tr><td class="lineno" valign="top"></td><td class="lblock">      <span class="delete">Since or</span> If-Unmodified-Since header field, because the client has</td><td> </td><td class="rblock">      <span class="insert">Since,</span> If-Unmodified-Since header field, because the client has a</td><td class="lineno" valign="top"></td></tr>
386      <tr><td class="lineno" valign="top"></td><td class="lblock">      a cache <span class="delete">entry</span> for the associated representation, and</td><td> </td><td class="rblock">      cache <span class="insert">entry, or If-Range</span> for the associated representation, and</td><td class="lineno" valign="top"></td></tr>
387      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
388      <tr><td class="lineno" valign="top"></td><td class="left">   o  That cache entry includes a Date value, which gives the time when</td><td> </td><td class="right">   o  That cache entry includes a Date value, which gives the time when</td><td class="lineno" valign="top"></td></tr>
389      <tr><td class="lineno" valign="top"></td><td class="left">      the origin server sent the original response, and</td><td> </td><td class="right">      the origin server sent the original response, and</td><td class="lineno" valign="top"></td></tr>
390      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
391      <tr><td class="lineno" valign="top"></td><td class="left">   o  The presented Last-Modified time is at least 60 seconds before the</td><td> </td><td class="right">   o  The presented Last-Modified time is at least 60 seconds before the</td><td class="lineno" valign="top"></td></tr>
392      <tr><td class="lineno" valign="top"></td><td class="left">      Date value.</td><td> </td><td class="right">      Date value.</td><td class="lineno" valign="top"></td></tr>
393      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
394      <tr><td class="lineno" valign="top"></td><td class="left">   or</td><td> </td><td class="right">   or</td><td class="lineno" valign="top"></td></tr>
395      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
396      <tr><td class="lineno" valign="top"></td><td class="left">   o  The validator is being compared by an intermediate cache to the</td><td> </td><td class="right">   o  The validator is being compared by an intermediate cache to the</td><td class="lineno" valign="top"></td></tr>
397      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
398      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 8, line 29</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 10, line 13</em></th><td></td></tr>
399      <tr><td class="lineno" valign="top"></td><td class="left">   This method relies on the fact that if two different responses were</td><td> </td><td class="right">   This method relies on the fact that if two different responses were</td><td class="lineno" valign="top"></td></tr>
400      <tr><td class="lineno" valign="top"></td><td class="left">   sent by the origin server during the same second, but both had the</td><td> </td><td class="right">   sent by the origin server during the same second, but both had the</td><td class="lineno" valign="top"></td></tr>
401      <tr><td class="lineno" valign="top"></td><td class="left">   same Last-Modified time, then at least one of those responses would</td><td> </td><td class="right">   same Last-Modified time, then at least one of those responses would</td><td class="lineno" valign="top"></td></tr>
402      <tr><td class="lineno" valign="top"></td><td class="left">   have a Date value equal to its Last-Modified time.  The arbitrary 60-</td><td> </td><td class="right">   have a Date value equal to its Last-Modified time.  The arbitrary 60-</td><td class="lineno" valign="top"></td></tr>
403      <tr><td class="lineno" valign="top"></td><td class="left">   second limit guards against the possibility that the Date and Last-</td><td> </td><td class="right">   second limit guards against the possibility that the Date and Last-</td><td class="lineno" valign="top"></td></tr>
404      <tr><td class="lineno" valign="top"></td><td class="left">   Modified values are generated from different clocks, or at somewhat</td><td> </td><td class="right">   Modified values are generated from different clocks, or at somewhat</td><td class="lineno" valign="top"></td></tr>
405      <tr><td class="lineno" valign="top"></td><td class="left">   different times during the preparation of the response.  An</td><td> </td><td class="right">   different times during the preparation of the response.  An</td><td class="lineno" valign="top"></td></tr>
406      <tr><td class="lineno" valign="top"></td><td class="left">   implementation MAY use a value larger than 60 seconds, if it is</td><td> </td><td class="right">   implementation MAY use a value larger than 60 seconds, if it is</td><td class="lineno" valign="top"></td></tr>
407      <tr><td class="lineno" valign="top"></td><td class="left">   believed that 60 seconds is too short.</td><td> </td><td class="right">   believed that 60 seconds is too short.</td><td class="lineno" valign="top"></td></tr>
408      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
409      <tr><td><a name="diff0026" /></td></tr>
410      <tr><td class="lineno" valign="top"></td><td class="lblock">2.<span class="delete">2</span>.  ETag</td><td> </td><td class="rblock">2.<span class="insert">3</span>.  ETag</td><td class="lineno" valign="top"></td></tr>
411      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
412      <tr><td class="lineno" valign="top"></td><td class="left">   The ETag header field provides the current entity-tag for the</td><td> </td><td class="right">   The ETag header field provides the current entity-tag for the</td><td class="lineno" valign="top"></td></tr>
413      <tr><td class="lineno" valign="top"></td><td class="left">   selected representation.  An entity-tag is an opaque validator for</td><td> </td><td class="right">   selected representation.  An entity-tag is an opaque validator for</td><td class="lineno" valign="top"></td></tr>
414      <tr><td class="lineno" valign="top"></td><td class="left">   differentiating between multiple representations of the same</td><td> </td><td class="right">   differentiating between multiple representations of the same</td><td class="lineno" valign="top"></td></tr>
415      <tr><td class="lineno" valign="top"></td><td class="left">   resource, regardless of whether those multiple representations are</td><td> </td><td class="right">   resource, regardless of whether those multiple representations are</td><td class="lineno" valign="top"></td></tr>
416      <tr><td class="lineno" valign="top"></td><td class="left">   due to resource state changes over time, content negotiation</td><td> </td><td class="right">   due to resource state changes over time, content negotiation</td><td class="lineno" valign="top"></td></tr>
417      <tr><td class="lineno" valign="top"></td><td class="left">   resulting in multiple representations being valid at the same time,</td><td> </td><td class="right">   resulting in multiple representations being valid at the same time,</td><td class="lineno" valign="top"></td></tr>
418      <tr><td class="lineno" valign="top"></td><td class="left">   or both.  An entity-tag consists of an opaque quoted string, possibly</td><td> </td><td class="right">   or both.  An entity-tag consists of an opaque quoted string, possibly</td><td class="lineno" valign="top"></td></tr>
419      <tr><td class="lineno" valign="top"></td><td class="left">   prefixed by a weakness indicator.</td><td> </td><td class="right">   prefixed by a weakness indicator.</td><td class="lineno" valign="top"></td></tr>
420      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
421      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
422      <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 9, line 11</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 10, line 42</em></th><td></td></tr>
423      <tr><td class="lineno" valign="top"></td><td class="left">   dates, where the one-second resolution of HTTP date values is not</td><td> </td><td class="right">   dates, where the one-second resolution of HTTP date values is not</td><td class="lineno" valign="top"></td></tr>
424      <tr><td class="lineno" valign="top"></td><td class="left">   sufficient, or where modification dates are not consistently</td><td> </td><td class="right">   sufficient, or where modification dates are not consistently</td><td class="lineno" valign="top"></td></tr>
425      <tr><td class="lineno" valign="top"></td><td class="left">   maintained.</td><td> </td><td class="right">   maintained.</td><td class="lineno" valign="top"></td></tr>
426      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
427      <tr><td class="lineno" valign="top"></td><td class="left">   Examples:</td><td> </td><td class="right">   Examples:</td><td class="lineno" valign="top"></td></tr>
428      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
429      <tr><td class="lineno" valign="top"></td><td class="left">     ETag: "xyzzy"</td><td> </td><td class="right">     ETag: "xyzzy"</td><td class="lineno" valign="top"></td></tr>
430      <tr><td class="lineno" valign="top"></td><td class="left">     ETag: W/"xyzzy"</td><td> </td><td class="right">     ETag: W/"xyzzy"</td><td class="lineno" valign="top"></td></tr>
431      <tr><td class="lineno" valign="top"></td><td class="left">     ETag: ""</td><td> </td><td class="right">     ETag: ""</td><td class="lineno" valign="top"></td></tr>
432      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
433      <tr><td><a name="diff0027" /></td></tr>
434      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">2.2.1.</span>  Generation</td><td> </td><td class="rblock">   <span class="insert">An entity-tag can be either a weak or strong validator, with strong</span></td><td class="lineno" valign="top"></td></tr>
435      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   being the default.  If an origin server provides an entity-tag for a</span></td><td class="lineno" valign="top"></td></tr>
436      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   representation and the generation of that entity-tag does not satisfy</span></td><td class="lineno" valign="top"></td></tr>
437      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the requirements for a strong validator (Section 2.1), then that</span></td><td class="lineno" valign="top"></td></tr>
438      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   entity-tag MUST be marked as weak by prefixing its opaque value with</span></td><td class="lineno" valign="top"></td></tr>
439      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   "W/" (case-sensitive).</span></td><td class="lineno" valign="top"></td></tr>
440      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
441      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">2.3.1.</span>  Generation</td><td class="lineno" valign="top"></td></tr>
442      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
443      <tr><td class="lineno" valign="top"></td><td class="left">   The principle behind entity-tags is that only the service author</td><td> </td><td class="right">   The principle behind entity-tags is that only the service author</td><td class="lineno" valign="top"></td></tr>
444      <tr><td class="lineno" valign="top"></td><td class="left">   knows the implementation of a resource well enough to select the most</td><td> </td><td class="right">   knows the implementation of a resource well enough to select the most</td><td class="lineno" valign="top"></td></tr>
445      <tr><td class="lineno" valign="top"></td><td class="left">   accurate and efficient validation mechanism for that resource, and</td><td> </td><td class="right">   accurate and efficient validation mechanism for that resource, and</td><td class="lineno" valign="top"></td></tr>
446      <tr><td class="lineno" valign="top"></td><td class="left">   that any such mechanism can be mapped to a simple sequence of octets</td><td> </td><td class="right">   that any such mechanism can be mapped to a simple sequence of octets</td><td class="lineno" valign="top"></td></tr>
447      <tr><td class="lineno" valign="top"></td><td class="left">   for easy comparison.  Since the value is opaque, there is no need for</td><td> </td><td class="right">   for easy comparison.  Since the value is opaque, there is no need for</td><td class="lineno" valign="top"></td></tr>
448      <tr><td class="lineno" valign="top"></td><td class="left">   the client to be aware of how each entity-tag is constructed.</td><td> </td><td class="right">   the client to be aware of how each entity-tag is constructed.</td><td class="lineno" valign="top"></td></tr>
449      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
450      <tr><td class="lineno" valign="top"></td><td class="left">   For example, a resource that has implementation-specific versioning</td><td> </td><td class="right">   For example, a resource that has implementation-specific versioning</td><td class="lineno" valign="top"></td></tr>
451      <tr><td class="lineno" valign="top"></td><td class="left">   applied to all changes might use an internal revision number, perhaps</td><td> </td><td class="right">   applied to all changes might use an internal revision number, perhaps</td><td class="lineno" valign="top"></td></tr>
452      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
453      <tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 9, line 35</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 11, line 29</em></th><td></td></tr>
454      <tr><td class="lineno" valign="top"></td><td class="left">   combination of various filesystem attributes, or a modification</td><td> </td><td class="right">   combination of various filesystem attributes, or a modification</td><td class="lineno" valign="top"></td></tr>
455      <tr><td class="lineno" valign="top"></td><td class="left">   timestamp that has sub-second resolution.</td><td> </td><td class="right">   timestamp that has sub-second resolution.</td><td class="lineno" valign="top"></td></tr>
456      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
457      <tr><td class="lineno" valign="top"></td><td class="left">   Origin servers SHOULD send ETag for any selected representation for</td><td> </td><td class="right">   Origin servers SHOULD send ETag for any selected representation for</td><td class="lineno" valign="top"></td></tr>
458      <tr><td class="lineno" valign="top"></td><td class="left">   which detection of changes can be reasonably and consistently</td><td> </td><td class="right">   which detection of changes can be reasonably and consistently</td><td class="lineno" valign="top"></td></tr>
459      <tr><td class="lineno" valign="top"></td><td class="left">   determined, since the entity-tag's use in conditional requests and</td><td> </td><td class="right">   determined, since the entity-tag's use in conditional requests and</td><td class="lineno" valign="top"></td></tr>
460      <tr><td class="lineno" valign="top"></td><td class="left">   evaluating cache freshness ([Part6]) can result in a substantial</td><td> </td><td class="right">   evaluating cache freshness ([Part6]) can result in a substantial</td><td class="lineno" valign="top"></td></tr>
461      <tr><td class="lineno" valign="top"></td><td class="left">   reduction of HTTP network traffic and can be a significant factor in</td><td> </td><td class="right">   reduction of HTTP network traffic and can be a significant factor in</td><td class="lineno" valign="top"></td></tr>
462      <tr><td class="lineno" valign="top"></td><td class="left">   improving service scalability and reliability.</td><td> </td><td class="right">   improving service scalability and reliability.</td><td class="lineno" valign="top"></td></tr>
463      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
464      <tr><td><a name="diff0028" /></td></tr>
465      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">2.2.2.  Weak versus Strong</span></td><td> </td><td class="rblock"><span class="insert">2.3.2.</span>  Comparison</td><td class="lineno" valign="top"></td></tr>
466      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
467      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Since both origin servers and caches will compare two validators to</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
468      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   decide if they indicate the same or different representations, one</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
469      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   normally would expect that if the representation (including both</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
470      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representation header fields and representation body) changes in any</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
471      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   way, then the associated validator would change as well.  If this is</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
472      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   true, then we call that validator a "strong validator".  One example</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
473      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of a strong validator is an integer that is incremented in stable</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
474      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   storage every time a representation is changed.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
475      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
476      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   However, there might be cases when a server prefers to change the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
477      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   validator only when it desires cached representations to be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
478      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   invalidated.  For example, the representation of a weather report</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
479      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   that changes in content every second, based on dynamic measurements,</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
480      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   might be grouped into sets of equivalent representations (from the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
481      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   origin server's perspective) in order to allow cached representations</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
482      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   to be valid for a reasonable period of time (perhaps adjusted</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
483      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   dynamically based on server load or weather quality).  A validator</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
484      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   that does not always change when the representation changes is a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
485      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   "weak validator".</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
486      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
487      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   One can think of a strong validator as part of an identifier for a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
488      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   specific representation, whereas a weak validator is part of an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
489      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   identifier for a set of equivalent representations (where this notion</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
490      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of equivalence is entirely governed by the origin server and beyond</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
491      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the scope of this specification).</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
492      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
493      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   An entity-tag is normally a strong validator, but the protocol</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
494      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   provides a mechanism to tag an entity-tag as "weak".</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
495      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
496      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      A representation's modification time, if defined with only one-</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
497      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      second resolution, could be a weak validator, since it is possible</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
498      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      that the representation might be modified twice during a single</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
499      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      second.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
500      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
501      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Support for weak validators is optional.  However, weak validators</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
502      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      allow for more efficient caching of equivalent objects; for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
503      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      example, a hit counter on a site is probably good enough if it is</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
504      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      updated every few days or weeks, and any value during that period</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
505      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      is likely "good enough" to be equivalent.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
506      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
507      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   A strong entity-tag MUST change whenever the associated</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
508      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representation changes in any way.  A weak entity-tag SHOULD change</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
509      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   whenever the origin server considers prior representations to be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
510      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   unacceptable as a substitute for the current representation.  In</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
511      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   other words, a weak entity tag SHOULD change whenever the origin</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
512      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   server wants caches to invalidate old responses.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
513      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
514      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   A "strong entity-tag" MAY be shared by two representations of a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
515      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   resource only if they are equivalent by octet equality.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
516      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
517      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   A "weak entity-tag", indicated by the "W/" prefix, MAY be shared by</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
518      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   two representations of a resource.  A weak entity-tag can only be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
519      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   used for weak comparison.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
520      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
521      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Cache entries might persist for arbitrarily long periods, regardless</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
522      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of expiration times.  Thus, a cache might attempt to validate an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
523      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   entry using a validator that it obtained in the distant past.  A</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
524      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   strong entity-tag MUST be unique across all versions of all</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
525      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representations associated with a particular resource over time.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
526      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   However, there is no implication of uniqueness across entity-tags of</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
527      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   different resources (i.e., the same entity-tag value might be in use</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
528      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   for representations of multiple resources at the same time and does</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
529      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   not imply that those representations are equivalent).</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
530      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
531      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">2.2.3.</span>  Comparison</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
532      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
533      <tr><td class="lineno" valign="top"></td><td class="left">   There are two entity-tag comparison functions, depending on whether</td><td> </td><td class="right">   There are two entity-tag comparison functions, depending on whether</td><td class="lineno" valign="top"></td></tr>
534      <tr><td class="lineno" valign="top"></td><td class="left">   the comparison context allows the use of weak validators or not:</td><td> </td><td class="right">   the comparison context allows the use of weak validators or not:</td><td class="lineno" valign="top"></td></tr>
535      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
536      <tr><td class="lineno" valign="top"></td><td class="left">   o  The strong comparison function: in order to be considered equal,</td><td> </td><td class="right">   o  The strong comparison function: in order to be considered equal,</td><td class="lineno" valign="top"></td></tr>
537      <tr><td class="lineno" valign="top"></td><td class="left">      both opaque-tags MUST be identical character-by-character, and</td><td> </td><td class="right">      both opaque-tags MUST be identical character-by-character, and</td><td class="lineno" valign="top"></td></tr>
538      <tr><td class="lineno" valign="top"></td><td class="left">      both MUST NOT be weak.</td><td> </td><td class="right">      both MUST NOT be weak.</td><td class="lineno" valign="top"></td></tr>
539      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
540      <tr><td class="lineno" valign="top"></td><td class="left">   o  The weak comparison function: in order to be considered equal,</td><td> </td><td class="right">   o  The weak comparison function: in order to be considered equal,</td><td class="lineno" valign="top"></td></tr>
541      <tr><td class="lineno" valign="top"></td><td class="left">      both opaque-tags MUST be identical character-by-character, but</td><td> </td><td class="right">      both opaque-tags MUST be identical character-by-character, but</td><td class="lineno" valign="top"></td></tr>
542      <tr><td class="lineno" valign="top"></td><td class="left">      either or both of them MAY be tagged as "weak" without affecting</td><td> </td><td class="right">      either or both of them MAY be tagged as "weak" without affecting</td><td class="lineno" valign="top"></td></tr>
543      <tr><td class="lineno" valign="top"></td><td class="left">      the result.</td><td> </td><td class="right">      the result.</td><td class="lineno" valign="top"></td></tr>
544      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
545      <tr><td><a name="diff0029" /></td></tr>
546      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A "use" of a validator is either when a client generates a request</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
547      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   and includes the validator in a precondition, or when a server</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
548      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   compares two validators.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
549      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
550      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Strong validators are usable in any context.  Weak validators are</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
551      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   only usable in contexts that do not depend on exact equality of a</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
552      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representation.  For example, either kind is usable for a normal</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
553      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   conditional GET.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
554      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
555      <tr><td class="lineno" valign="top"></td><td class="left">   The example below shows the results for a set of entity-tag pairs,</td><td> </td><td class="right">   The example below shows the results for a set of entity-tag pairs,</td><td class="lineno" valign="top"></td></tr>
556      <tr><td class="lineno" valign="top"></td><td class="left">   and both the weak and strong comparison function results:</td><td> </td><td class="right">   and both the weak and strong comparison function results:</td><td class="lineno" valign="top"></td></tr>
557      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
558      <tr><td class="lineno" valign="top"></td><td class="left">   +--------+--------+-------------------+-----------------+</td><td> </td><td class="right">   +--------+--------+-------------------+-----------------+</td><td class="lineno" valign="top"></td></tr>
559      <tr><td class="lineno" valign="top"></td><td class="left">   | ETag 1 | ETag 2 | Strong Comparison | Weak Comparison |</td><td> </td><td class="right">   | ETag 1 | ETag 2 | Strong Comparison | Weak Comparison |</td><td class="lineno" valign="top"></td></tr>
560      <tr><td class="lineno" valign="top"></td><td class="left">   +--------+--------+-------------------+-----------------+</td><td> </td><td class="right">   +--------+--------+-------------------+-----------------+</td><td class="lineno" valign="top"></td></tr>
561      <tr><td class="lineno" valign="top"></td><td class="left">   | W/"1"  | W/"1"  | no match          | match           |</td><td> </td><td class="right">   | W/"1"  | W/"1"  | no match          | match           |</td><td class="lineno" valign="top"></td></tr>
562      <tr><td class="lineno" valign="top"></td><td class="left">   | W/"1"  | W/"2"  | no match          | no match        |</td><td> </td><td class="right">   | W/"1"  | W/"2"  | no match          | no match        |</td><td class="lineno" valign="top"></td></tr>
563      <tr><td class="lineno" valign="top"></td><td class="left">   | W/"1"  | "1"    | no match          | match           |</td><td> </td><td class="right">   | W/"1"  | "1"    | no match          | match           |</td><td class="lineno" valign="top"></td></tr>
564      <tr><td class="lineno" valign="top"></td><td class="left">   | "1"    | "1"    | match             | match           |</td><td> </td><td class="right">   | "1"    | "1"    | match             | match           |</td><td class="lineno" valign="top"></td></tr>
565      <tr><td class="lineno" valign="top"></td><td class="left">   +--------+--------+-------------------+-----------------+</td><td> </td><td class="right">   +--------+--------+-------------------+-----------------+</td><td class="lineno" valign="top"></td></tr>
566      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
567      <tr><td><a name="diff0030" /></td></tr>
568      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   An entity-tag is strong unless it is explicitly tagged as weak.</span></td><td> </td><td class="rblock"><span class="insert">2.3.3.  Example: Entity-tags varying on Content-Negotiated Resources</span></td><td class="lineno" valign="top"></td></tr>
569      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
570      <tr><td><a name="diff0031" /></td></tr>
571      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">2.2.4.</span>  Rules for When to Use Entity-tags and Last-Modified Dates</td><td> </td><td class="rblock">   <span class="insert">Consider a resource that is subject to content negotiation (Section 5</span></td><td class="lineno" valign="top"></td></tr>
572      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   of [Part3]), and where the representations returned upon a GET</span></td><td class="lineno" valign="top"></td></tr>
573      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   request vary based on the Accept-Encoding request header field</span></td><td class="lineno" valign="top"></td></tr>
574      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   (Section 6.3 of [Part3]):</span></td><td class="lineno" valign="top"></td></tr>
575      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
576      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   &gt;&gt; Request:</span></td><td class="lineno" valign="top"></td></tr>
577      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
578      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     GET /index HTTP/1.1</span></td><td class="lineno" valign="top"></td></tr>
579      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Host: www.example.com</span></td><td class="lineno" valign="top"></td></tr>
580      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Accept-Encoding: gzip</span></td><td class="lineno" valign="top"></td></tr>
581      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
582      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   In this case, the response might or might not use the gzip content</span></td><td class="lineno" valign="top"></td></tr>
583      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   coding.  If it does not, the response might look like:</span></td><td class="lineno" valign="top"></td></tr>
584      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
585      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   &gt;&gt; Response:</span></td><td class="lineno" valign="top"></td></tr>
586      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
587      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     HTTP/1.1 200 OK</span></td><td class="lineno" valign="top"></td></tr>
588      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Date: Thu, 26 Mar 2010 00:05:00 GMT</span></td><td class="lineno" valign="top"></td></tr>
589      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     ETag: "123-a"</span></td><td class="lineno" valign="top"></td></tr>
590      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Content-Length: 70</span></td><td class="lineno" valign="top"></td></tr>
591      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Vary: Accept-Encoding</span></td><td class="lineno" valign="top"></td></tr>
592      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Content-Type: text/plain</span></td><td class="lineno" valign="top"></td></tr>
593      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
594      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Hello World!</span></td><td class="lineno" valign="top"></td></tr>
595      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Hello World!</span></td><td class="lineno" valign="top"></td></tr>
596      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Hello World!</span></td><td class="lineno" valign="top"></td></tr>
597      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Hello World!</span></td><td class="lineno" valign="top"></td></tr>
598      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Hello World!</span></td><td class="lineno" valign="top"></td></tr>
599      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
600      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   An alternative representation that does use gzip content coding would</span></td><td class="lineno" valign="top"></td></tr>
601      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   be:</span></td><td class="lineno" valign="top"></td></tr>
602      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
603      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   &gt;&gt; Response:</span></td><td class="lineno" valign="top"></td></tr>
604      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
605      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     HTTP/1.1 200 OK</span></td><td class="lineno" valign="top"></td></tr>
606      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Date: Thu, 26 Mar 2010 00:05:00 GMT</span></td><td class="lineno" valign="top"></td></tr>
607      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     ETag: "123-b"</span></td><td class="lineno" valign="top"></td></tr>
608      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Content-Length: 43</span></td><td class="lineno" valign="top"></td></tr>
609      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Vary: Accept-Encoding</span></td><td class="lineno" valign="top"></td></tr>
610      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Content-Type: text/plain</span></td><td class="lineno" valign="top"></td></tr>
611      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     Content-Encoding: gzip</span></td><td class="lineno" valign="top"></td></tr>
612      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
613      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     ...binary data...</span></td><td class="lineno" valign="top"></td></tr>
614      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
615      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Note: Content codings are a property of the representation, so</span></td><td class="lineno" valign="top"></td></tr>
616      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      therefore an entity-tag of an encoded representation must be</span></td><td class="lineno" valign="top"></td></tr>
617      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      distinct from an unencoded representation to prevent conflicts</span></td><td class="lineno" valign="top"></td></tr>
618      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      during cache updates and range requests.  In contrast, transfer</span></td><td class="lineno" valign="top"></td></tr>
619      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      codings (Section 6.2 of [Part1]) apply only during message</span></td><td class="lineno" valign="top"></td></tr>
620      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      transfer and do not require distinct entity-tags.</span></td><td class="lineno" valign="top"></td></tr>
621      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
622      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">2.4.</span>  Rules for When to Use Entity-tags and Last-Modified Dates</td><td class="lineno" valign="top"></td></tr>
623      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
624      <tr><td class="lineno" valign="top"></td><td class="left">   We adopt a set of rules and recommendations for origin servers,</td><td> </td><td class="right">   We adopt a set of rules and recommendations for origin servers,</td><td class="lineno" valign="top"></td></tr>
625      <tr><td class="lineno" valign="top"></td><td class="left">   clients, and caches regarding when various validator types ought to</td><td> </td><td class="right">   clients, and caches regarding when various validator types ought to</td><td class="lineno" valign="top"></td></tr>
626      <tr><td class="lineno" valign="top"></td><td class="left">   be used, and for what purposes.</td><td> </td><td class="right">   be used, and for what purposes.</td><td class="lineno" valign="top"></td></tr>
627      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
628      <tr><td class="lineno" valign="top"></td><td class="left">   HTTP/1.1 origin servers:</td><td> </td><td class="right">   HTTP/1.1 origin servers:</td><td class="lineno" valign="top"></td></tr>
629      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
630      <tr><td class="lineno" valign="top"></td><td class="left">   o  SHOULD send an entity-tag validator unless it is not feasible to</td><td> </td><td class="right">   o  SHOULD send an entity-tag validator unless it is not feasible to</td><td class="lineno" valign="top"></td></tr>
631      <tr><td class="lineno" valign="top"></td><td class="left">      generate one.</td><td> </td><td class="right">      generate one.</td><td class="lineno" valign="top"></td></tr>
632      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
633      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
634      <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 13, line 13</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 14, line 43</em></th><td></td></tr>
635      <tr><td class="lineno" valign="top"></td><td class="left">      conservative assumptions about the validators they receive.</td><td> </td><td class="right">      conservative assumptions about the validators they receive.</td><td class="lineno" valign="top"></td></tr>
636      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
637      <tr><td class="lineno" valign="top"></td><td class="left">      HTTP/1.0 clients and caches might ignore entity-tags.  Generally,</td><td> </td><td class="right">      HTTP/1.0 clients and caches might ignore entity-tags.  Generally,</td><td class="lineno" valign="top"></td></tr>
638      <tr><td class="lineno" valign="top"></td><td class="left">      last-modified values received or used by these systems will</td><td> </td><td class="right">      last-modified values received or used by these systems will</td><td class="lineno" valign="top"></td></tr>
639      <tr><td class="lineno" valign="top"></td><td class="left">      support transparent and efficient caching, and so HTTP/1.1 origin</td><td> </td><td class="right">      support transparent and efficient caching, and so HTTP/1.1 origin</td><td class="lineno" valign="top"></td></tr>
640      <tr><td class="lineno" valign="top"></td><td class="left">      servers should provide Last-Modified values.  In those rare cases</td><td> </td><td class="right">      servers should provide Last-Modified values.  In those rare cases</td><td class="lineno" valign="top"></td></tr>
641      <tr><td class="lineno" valign="top"></td><td class="left">      where the use of a Last-Modified value as a validator by an</td><td> </td><td class="right">      where the use of a Last-Modified value as a validator by an</td><td class="lineno" valign="top"></td></tr>
642      <tr><td class="lineno" valign="top"></td><td class="left">      HTTP/1.0 system could result in a serious problem, then HTTP/1.1</td><td> </td><td class="right">      HTTP/1.0 system could result in a serious problem, then HTTP/1.1</td><td class="lineno" valign="top"></td></tr>
643      <tr><td class="lineno" valign="top"></td><td class="left">      origin servers should not provide one.</td><td> </td><td class="right">      origin servers should not provide one.</td><td class="lineno" valign="top"></td></tr>
644      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
645      <tr><td><a name="diff0032" /></td></tr>
646      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">2.2.5.  Example: Entity-tags varying on Content-Negotiated Resources</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
647      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
648      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Consider a resource that is subject to content negotiation (Section 5</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
649      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of [Part3]), and where the representations returned upon a GET</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
650      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   request vary based on the Accept-Encoding request header field</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
651      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (Section 6.3 of [Part3]):</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
652      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
653      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   &gt;&gt; Request:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
654      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
655      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     GET /index HTTP/1.1</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
656      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Host: www.example.com</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
657      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Accept-Encoding: gzip</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
658      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
659      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   In this case, the response might or might not use the gzip content</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
660      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   coding.  If it does not, the response might look like:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
661      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
662      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   &gt;&gt; Response:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
663      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
664      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     HTTP/1.1 200 OK</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
665      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Date: Thu, 26 Mar 2010 00:05:00 GMT</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
666      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     ETag: "123-a"</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
667      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Content-Length: 70</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
668      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Vary: Accept-Encoding</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
669      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Content-Type: text/plain</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
670      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
671      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Hello World!</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
672      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Hello World!</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
673      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Hello World!</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
674      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Hello World!</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
675      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Hello World!</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
676      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
677      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   An alternative representation that does use gzip content coding would</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
678      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   be:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
679      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
680      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   &gt;&gt; Response:</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
681      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
682      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     HTTP/1.1 200 OK</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
683      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Date: Thu, 26 Mar 2010 00:05:00 GMT</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
684      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     ETag: "123-b"</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
685      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Content-Length: 43</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
686      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Vary: Accept-Encoding</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
687      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Content-Type: text/plain</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
688      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     Content-Encoding: gzip</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
689      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
690      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     ...binary data...</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
691      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"></span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
692      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      Note: Content codings are a property of the representation, so</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
693      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      therefore an entity-tag of an encoded representation must be</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
694      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      distinct from an unencoded representation to prevent conflicts</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
695      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      during cache updates and range requests.  In contrast, transfer</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
696      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      codings (Section 6.2 of [Part1]) apply only during message</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
697      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      transfer and do not require distinct entity-tags.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
698      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
699      <tr><td class="lineno" valign="top"></td><td class="left">3.  Precondition Header Fields</td><td> </td><td class="right">3.  Precondition Header Fields</td><td class="lineno" valign="top"></td></tr>
700      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
701      <tr><td class="lineno" valign="top"></td><td class="left">   This section defines the syntax and semantics of HTTP/1.1 header</td><td> </td><td class="right">   This section defines the syntax and semantics of HTTP/1.1 header</td><td class="lineno" valign="top"></td></tr>
702      <tr><td class="lineno" valign="top"></td><td class="left">   fields for applying preconditions on requests.</td><td> </td><td class="right">   fields for applying preconditions on requests.</td><td class="lineno" valign="top"></td></tr>
703      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
704      <tr><td class="lineno" valign="top"></td><td class="left">3.1.  If-Match</td><td> </td><td class="right">3.1.  If-Match</td><td class="lineno" valign="top"></td></tr>
705      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
706      <tr><td class="lineno" valign="top"></td><td class="left">   The "If-Match" header field MAY be used to make a request method</td><td> </td><td class="right">   The "If-Match" header field MAY be used to make a request method</td><td class="lineno" valign="top"></td></tr>
707      <tr><td class="lineno" valign="top"></td><td class="left">   conditional on the current existence or value of an entity-tag for</td><td> </td><td class="right">   conditional on the current existence or value of an entity-tag for</td><td class="lineno" valign="top"></td></tr>
708      <tr><td class="lineno" valign="top"></td><td class="left">   one or more representations of the target resource.  If-Match is</td><td> </td><td class="right">   one or more representations of the target resource.  If-Match is</td><td class="lineno" valign="top"></td></tr>
709      <tr><td class="lineno" valign="top"></td><td class="left">   generally useful for resource update requests, such as PUT requests,</td><td> </td><td class="right">   generally useful for resource update requests, such as PUT requests,</td><td class="lineno" valign="top"></td></tr>
710      <tr><td class="lineno" valign="top"></td><td class="left">   as a means for protecting against accidental overwrites when multiple</td><td> </td><td class="right">   as a means for protecting against accidental overwrites when multiple</td><td class="lineno" valign="top"></td></tr>
711      <tr><td class="lineno" valign="top"></td><td class="left">   clients are acting in parallel on the same resource (i.e., the "lost</td><td> </td><td class="right">   clients are acting in parallel on the same resource (i.e., the "lost</td><td class="lineno" valign="top"></td></tr>
712      <tr><td class="lineno" valign="top"></td><td class="left">   update" problem).  An If-Match field-value of "*" places the</td><td> </td><td class="right">   update" problem).  An If-Match field-value of "*" places the</td><td class="lineno" valign="top"></td></tr>
713      <tr><td class="lineno" valign="top"></td><td class="left">   precondition on the existence of any current representation for the</td><td> </td><td class="right">   precondition on the existence of any current representation for the</td><td class="lineno" valign="top"></td></tr>
714      <tr><td class="lineno" valign="top"></td><td class="left">   target resource.</td><td> </td><td class="right">   target resource.</td><td class="lineno" valign="top"></td></tr>
715      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
716      <tr><td class="lineno" valign="top"></td><td class="left">     If-Match = "*" / 1#entity-tag</td><td> </td><td class="right">     If-Match = "*" / 1#entity-tag</td><td class="lineno" valign="top"></td></tr>
717      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
718      <tr><td class="lineno" valign="top"></td><td class="left">   If any of the entity-tags listed in the If-Match field value match</td><td> </td><td class="right">   If any of the entity-tags listed in the If-Match field value match</td><td class="lineno" valign="top"></td></