source: draft-ietf-httpbis/diffs/draft-ietf-httpbis-p6-cache-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: 196.7 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-p6-cache-15.txt - draft-ietf-httpbis-p6-cache-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-p6-cache-15.txt&nbsp;</th><th> </th><th>&nbsp;draft-ietf-httpbis-p6-cache-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">                                                      M. Nottingham, Ed.</td><td> </td><td class="right">                                                      M. Nottingham, Ed.</td><td class="lineno" valign="top"></td></tr>
58      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
59      <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>
60      <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>
61      <tr><td><a name="diff0002" /></td></tr>
62      <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>
63      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
64      <tr><td class="lineno" valign="top"></td><td class="left">                       HTTP/1.1, part 6: Caching</td><td> </td><td class="right">                       HTTP/1.1, part 6: Caching</td><td class="lineno" valign="top"></td></tr>
65      <tr><td><a name="diff0003" /></td></tr>
66      <tr><td class="lineno" valign="top"></td><td class="lblock">                     draft-ietf-httpbis-p6-cache-1<span class="delete">5</span></td><td> </td><td class="rblock">                     draft-ietf-httpbis-p6-cache-1<span class="insert">6</span></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">Abstract</td><td> </td><td class="right">Abstract</td><td class="lineno" valign="top"></td></tr>
69      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
70      <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>
71      <tr><td><a name="diff0004" /></td></tr>
72      <tr><td class="lineno" valign="top"></td><td class="lblock">   protocol for distributed, collaborative, <span class="delete">hypermedia</span> information</td><td> </td><td class="rblock">   protocol for distributed, collaborative, <span class="insert">hypertext</span> information</td><td class="lineno" valign="top"></td></tr>
73      <tr><td class="lineno" valign="top"></td><td class="lblock">   systems.  This document is Part 6 of the seven-part specification</td><td> </td><td class="rblock">   systems.  <span class="insert">HTTP has been in use by the World Wide Web global</span></td><td class="lineno" valign="top"></td></tr>
74      <tr><td class="lineno" valign="top"></td><td class="lblock">   that defines the protocol referred to as "HTTP/1.1" and, taken</td><td> </td><td class="rblock"><span class="insert">   information initiative since 1990.</span>  This document is Part 6 of the</td><td class="lineno" valign="top"></td></tr>
75      <tr><td class="lineno" valign="top"></td><td class="lblock">   together, obsoletes RFC 2616.  Part 6 defines requirements on HTTP</td><td> </td><td class="rblock">   seven-part specification that defines the protocol referred to as</td><td class="lineno" valign="top"></td></tr>
76      <tr><td class="lineno" valign="top"></td><td class="lblock">   caches and the associated header fields that control cache behavior</td><td> </td><td class="rblock">   "HTTP/1.1" and, taken together, obsoletes RFC 2616.</td><td class="lineno" valign="top"></td></tr>
77      <tr><td class="lineno" valign="top"></td><td class="lblock">   or indicate cacheable response messages.</td><td> </td><td class="rblock">                                                                         </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">   Part 6 defines requirements on HTTP caches and the associated header</td><td class="lineno" valign="top"></td></tr>
79      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   fields that control cache behavior or indicate cacheable response</td><td class="lineno" valign="top"></td></tr>
80      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   messages.</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">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>
83      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
84      <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>
85      <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>
86      <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>
87      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
88      <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>
89      <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>
90      <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>
91      <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>
92      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
93      <tr><td><a name="diff0005" /></td></tr>
94      <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>
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">Status of This Memo</td><td> </td><td class="right">Status of This Memo</td><td class="lineno" valign="top"></td></tr>
97      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
98      <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>
99      <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>
100      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
101      <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>
102      <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>
103      <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>
104      <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>
105      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
106      <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>
107      <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>
108      <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>
109      <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>
110      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
111      <tr><td><a name="diff0006" /></td></tr>
112      <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>
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 Notice</td><td> </td><td class="right">Copyright Notice</td><td class="lineno" valign="top"></td></tr>
115      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
116      <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>
117      <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>
118      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
119      <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>
120      <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>
121      <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>
122      <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>
123      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
124      <tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 3, line 9</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 3, line 14</em></th><td></td></tr>
125      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
126      <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>
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">   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  5</td><td> </td><td class="right">   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  5</td><td class="lineno" valign="top"></td></tr>
129      <tr><td class="lineno" valign="top"></td><td class="left">     1.1.  Purpose  . . . . . . . . . . . . . . . . . . . . . . . . .  5</td><td> </td><td class="right">     1.1.  Purpose  . . . . . . . . . . . . . . . . . . . . . . . . .  5</td><td class="lineno" valign="top"></td></tr>
130      <tr><td class="lineno" valign="top"></td><td class="left">     1.2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  5</td><td> </td><td class="right">     1.2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  5</td><td class="lineno" valign="top"></td></tr>
131      <tr><td class="lineno" valign="top"></td><td class="left">     1.3.  Requirements . . . . . . . . . . . . . . . . . . . . . . .  7</td><td> </td><td class="right">     1.3.  Requirements . . . . . . . . . . . . . . . . . . . . . . .  7</td><td class="lineno" valign="top"></td></tr>
132      <tr><td class="lineno" valign="top"></td><td class="left">     1.4.  Syntax Notation  . . . . . . . . . . . . . . . . . . . . .  7</td><td> </td><td class="right">     1.4.  Syntax Notation  . . . . . . . . . . . . . . . . . . . . .  7</td><td class="lineno" valign="top"></td></tr>
133      <tr><td class="lineno" valign="top"></td><td class="left">       1.4.1.  Core Rules . . . . . . . . . . . . . . . . . . . . . .  7</td><td> </td><td class="right">       1.4.1.  Core Rules . . . . . . . . . . . . . . . . . . . . . .  7</td><td class="lineno" valign="top"></td></tr>
134      <tr><td class="lineno" valign="top"></td><td class="left">       1.4.2.  ABNF Rules defined in other Parts of the</td><td> </td><td class="right">       1.4.2.  ABNF Rules defined in other Parts of the</td><td class="lineno" valign="top"></td></tr>
135      <tr><td><a name="diff0007" /></td></tr>
136      <tr><td class="lineno" valign="top"></td><td class="lblock">               Specification  . . . . . . . . . . . . . . . . . . . .  <span class="delete">7</span></td><td> </td><td class="rblock">               Specification  . . . . . . . . . . . . . . . . . . . .  <span class="insert">8</span></td><td class="lineno" valign="top"></td></tr>
137      <tr><td class="lineno" valign="top"></td><td class="left">     1.5.  Delta Seconds  . . . . . . . . . . . . . . . . . . . . . .  8</td><td> </td><td class="right">     1.5.  Delta Seconds  . . . . . . . . . . . . . . . . . . . . . .  8</td><td class="lineno" valign="top"></td></tr>
138      <tr><td class="lineno" valign="top"></td><td class="left">   2.  Cache Operation  . . . . . . . . . . . . . . . . . . . . . . .  8</td><td> </td><td class="right">   2.  Cache Operation  . . . . . . . . . . . . . . . . . . . . . . .  8</td><td class="lineno" valign="top"></td></tr>
139      <tr><td><a name="diff0008" /></td></tr>
140      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.1.  Response Cacheability  . . . . . . . . . . . . . . . . . .  <span class="delete">8</span></td><td> </td><td class="rblock">     2.1.  Response Cacheability  . . . . . . . . . . . . . . . . . .  9</td><td class="lineno" valign="top"></td></tr>
141      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">       2.1.1.  Storing Partial and Incomplete Responses . . . . . . .</span>  9</td><td> </td><td class="rblock">     2.2.  Constructing Responses from Caches . . . . . . . . . . . . <span class="insert">10</span></td><td class="lineno" valign="top"></td></tr>
142      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.2.  Constructing Responses from Caches . . . . . . . . . . . .  <span class="delete">9</span></td><td> </td><td class="rblock">     2.3.  Freshness Model  . . . . . . . . . . . . . . . . . . . . . <span class="insert">11</span></td><td class="lineno" valign="top"></td></tr>
143      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.3.  Freshness Model  . . . . . . . . . . . . . . . . . . . . . <span class="delete">10</span></td><td> </td><td class="rblock">       2.3.1.  Calculating Freshness Lifetime . . . . . . . . . . . . <span class="insert">12</span></td><td class="lineno" valign="top"></td></tr>
144      <tr><td class="lineno" valign="top"></td><td class="lblock">       2.3.1.  Calculating Freshness Lifetime . . . . . . . . . . . . <span class="delete">11</span></td><td> </td><td class="rblock">       2.3.2.  Calculating Age  . . . . . . . . . . . . . . . . . . . <span class="insert">13</span></td><td class="lineno" valign="top"></td></tr>
145      <tr><td class="lineno" valign="top"></td><td class="lblock">       2.3.2.  Calculating Age  . . . . . . . . . . . . . . . . . . . <span class="delete">12</span></td><td> </td><td class="rblock">       2.3.3.  Serving Stale Responses  . . . . . . . . . . . . . . . <span class="insert">15</span></td><td class="lineno" valign="top"></td></tr>
146      <tr><td class="lineno" valign="top"></td><td class="lblock">       2.3.3.  Serving Stale Responses  . . . . . . . . . . . . . . . <span class="delete">14</span></td><td> </td><td class="rblock">     2.4.  Validation Model . . . . . . . . . . . . . . . . . . . . . <span class="insert">16</span></td><td class="lineno" valign="top"></td></tr>
147      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.4.  Validation Model . . . . . . . . . . . . . . . . . . . . . <span class="delete">14</span></td><td> </td><td class="rblock">     2.5.  Request Methods that Invalidate  . . . . . . . . . . . . . <span class="insert">16</span></td><td class="lineno" valign="top"></td></tr>
148      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.5.  Request Methods that Invalidate  . . . . . . . . . . . . . <span class="delete">15</span></td><td> </td><td class="rblock">     2.6.  Shared Caching of Authenticated Responses  . . . . . . . . <span class="insert">17</span></td><td class="lineno" valign="top"></td></tr>
149      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.6.  Shared Caching of Authenticated Responses  . . . . . . . . <span class="delete">16</span></td><td> </td><td class="rblock">     2.7.  Caching Negotiated Responses . . . . . . . . . . . . . . . <span class="insert">18</span></td><td class="lineno" valign="top"></td></tr>
150      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.7.  Caching Negotiated Responses . . . . . . . . . . . . . . . <span class="delete">16</span></td><td> </td><td class="rblock">     2.8.  Combining <span class="insert">Partial Content  . . . . . . . . . . . . . . . . 18</span></td><td class="lineno" valign="top"></td></tr>
151      <tr><td class="lineno" valign="top"></td><td class="lblock">     2.8.  Combining Responses  . . . . . . . . . . . . . . . . . . . <span class="delete">17</span></td><td> </td><td class="rblock"><span class="insert">     2.9.  Freshening</span> Responses . . . . . . . . . . . . . . . . . . . <span class="insert">19</span></td><td class="lineno" valign="top"></td></tr>
152      <tr><td class="lineno" valign="top"></td><td class="lblock">   3.  Header Field Definitions . . . . . . . . . . . . . . . . . . . <span class="delete">18</span></td><td> </td><td class="rblock">   3.  Header Field Definitions . . . . . . . . . . . . . . . . . . . <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
153      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.1.  Age  . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">18</span></td><td> </td><td class="rblock">     3.1.  Age  . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
154      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.2.  Cache-Control  . . . . . . . . . . . . . . . . . . . . . . <span class="delete">18</span></td><td> </td><td class="rblock">     3.2.  Cache-Control  . . . . . . . . . . . . . . . . . . . . . . <span class="insert">20</span></td><td class="lineno" valign="top"></td></tr>
155      <tr><td class="lineno" valign="top"></td><td class="lblock">       3.2.1.  Request Cache-Control Directives . . . . . . . . . . . <span class="delete">19</span></td><td> </td><td class="rblock">       3.2.1.  Request Cache-Control Directives . . . . . . . . . . . <span class="insert">21</span></td><td class="lineno" valign="top"></td></tr>
156      <tr><td class="lineno" valign="top"></td><td class="lblock">       3.2.2.  Response Cache-Control Directives  . . . . . . . . . . <span class="delete">21</span></td><td> </td><td class="rblock">       3.2.2.  Response Cache-Control Directives  . . . . . . . . . . <span class="insert">23</span></td><td class="lineno" valign="top"></td></tr>
157      <tr><td class="lineno" valign="top"></td><td class="lblock">       3.2.3.  Cache Control Extensions . . . . . . . . . . . . . . . <span class="delete">23</span></td><td> </td><td class="rblock">       3.2.3.  Cache Control Extensions . . . . . . . . . . . . . . . <span class="insert">25</span></td><td class="lineno" valign="top"></td></tr>
158      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.3.  Expires  . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">24</span></td><td> </td><td class="rblock">     3.3.  Expires  . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">26</span></td><td class="lineno" valign="top"></td></tr>
159      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.4.  Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">25</span></td><td> </td><td class="rblock">     3.4.  Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">27</span></td><td class="lineno" valign="top"></td></tr>
160      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.5.  Vary . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">26</span></td><td> </td><td class="rblock">     3.5.  Vary . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">28</span></td><td class="lineno" valign="top"></td></tr>
161      <tr><td class="lineno" valign="top"></td><td class="lblock">     3.6.  Warning  . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">27</span></td><td> </td><td class="rblock">     3.6.  Warning  . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">29</span></td><td class="lineno" valign="top"></td></tr>
162      <tr><td class="lineno" valign="top"></td><td class="lblock">   4.  History Lists  . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">29</span></td><td> </td><td class="rblock">   4.  History Lists  . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
163      <tr><td class="lineno" valign="top"></td><td class="lblock">   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . <span class="delete">29</span></td><td> </td><td class="rblock">   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
164      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.1.  Cache Directive Registry . . . . . . . . . . . . . . . . . <span class="delete">29</span></td><td> </td><td class="rblock">     5.1.  Cache Directive Registry . . . . . . . . . . . . . . . . . <span class="insert">31</span></td><td class="lineno" valign="top"></td></tr>
165      <tr><td class="lineno" valign="top"></td><td class="lblock">     5.2.  Header Field Registration  . . . . . . . . . . . . . . . . <span class="delete">30</span></td><td> </td><td class="rblock">     5.2.  Header Field Registration  . . . . . . . . . . . . . . . . <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
166      <tr><td class="lineno" valign="top"></td><td class="lblock">   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . <span class="delete">30</span></td><td> </td><td class="rblock">   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . <span class="insert">32</span></td><td class="lineno" valign="top"></td></tr>
167      <tr><td class="lineno" valign="top"></td><td class="lblock">   7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">31</span></td><td> </td><td class="rblock">   7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
168      <tr><td class="lineno" valign="top"></td><td class="lblock">   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">31</span></td><td> </td><td class="rblock">   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
169      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.1.  Normative References . . . . . . . . . . . . . . . . . . . <span class="delete">31</span></td><td> </td><td class="rblock">     8.1.  Normative References . . . . . . . . . . . . . . . . . . . <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
170      <tr><td class="lineno" valign="top"></td><td class="lblock">     8.2.  Informative References . . . . . . . . . . . . . . . . . . <span class="delete">32</span></td><td> </td><td class="rblock">     8.2.  Informative References . . . . . . . . . . . . . . . . . . <span class="insert">33</span></td><td class="lineno" valign="top"></td></tr>
171      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix A.  Changes from RFC 2616 . . . . . . . . . . . . . . . . <span class="delete">32</span></td><td> </td><td class="rblock">   Appendix A.  Changes from RFC 2616 . . . . . . . . . . . . . . . . <span class="insert">34</span></td><td class="lineno" valign="top"></td></tr>
172      <tr><td class="lineno" valign="top"></td><td class="lblock">   Appendix B.  Collected ABNF  . . . . . . . . . . . . . . . . . . . <span class="delete">32</span></td><td> </td><td class="rblock">   Appendix B.  Collected ABNF  . . . . . . . . . . . . . . . . . . . <span class="insert">34</span></td><td class="lineno" valign="top"></td></tr>
173      <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>
174      <tr><td><a name="diff0009" /></td></tr>
175      <tr><td class="lineno" valign="top"></td><td class="lblock">                publication)  . . . . . . . . . . . . . . . . . . . . <span class="delete">34</span></td><td> </td><td class="rblock">                publication)  . . . . . . . . . . . . . . . . . . . . <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
176      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.1.  Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . <span class="delete">34</span></td><td> </td><td class="rblock">     C.1.  Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
177      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.2.  Since draft-ietf-httpbis-p6-cache-00 . . . . . . . . . . . <span class="delete">34</span></td><td> </td><td class="rblock">     C.2.  Since draft-ietf-httpbis-p6-cache-00 . . . . . . . . . . . <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
178      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.3.  Since draft-ietf-httpbis-p6-cache-01 . . . . . . . . . . . <span class="delete">35</span></td><td> </td><td class="rblock">     C.3.  Since draft-ietf-httpbis-p6-cache-01 . . . . . . . . . . . <span class="insert">37</span></td><td class="lineno" valign="top"></td></tr>
179      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.4.  Since draft-ietf-httpbis-p6-cache-02 . . . . . . . . . . . <span class="delete">35</span></td><td> </td><td class="rblock">     C.4.  Since draft-ietf-httpbis-p6-cache-02 . . . . . . . . . . . <span class="insert">37</span></td><td class="lineno" valign="top"></td></tr>
180      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.5.  Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . <span class="delete">35</span></td><td> </td><td class="rblock">     C.5.  Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . <span class="insert">37</span></td><td class="lineno" valign="top"></td></tr>
181      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.6.  Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . <span class="delete">35</span></td><td> </td><td class="rblock">     C.6.  Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . <span class="insert">37</span></td><td class="lineno" valign="top"></td></tr>
182      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.7.  Since draft-ietf-httpbis-p6-cache-05 . . . . . . . . . . . <span class="delete">36</span></td><td> </td><td class="rblock">     C.7.  Since draft-ietf-httpbis-p6-cache-05 . . . . . . . . . . . <span class="insert">38</span></td><td class="lineno" valign="top"></td></tr>
183      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.8.  Since draft-ietf-httpbis-p6-cache-06 . . . . . . . . . . . <span class="delete">36</span></td><td> </td><td class="rblock">     C.8.  Since draft-ietf-httpbis-p6-cache-06 . . . . . . . . . . . <span class="insert">38</span></td><td class="lineno" valign="top"></td></tr>
184      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.9.  Since draft-ietf-httpbis-p6-cache-07 . . . . . . . . . . . <span class="delete">36</span></td><td> </td><td class="rblock">     C.9.  Since draft-ietf-httpbis-p6-cache-07 . . . . . . . . . . . <span class="insert">38</span></td><td class="lineno" valign="top"></td></tr>
185      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.10. Since draft-ietf-httpbis-p6-cache-08 . . . . . . . . . . . <span class="delete">37</span></td><td> </td><td class="rblock">     C.10. Since draft-ietf-httpbis-p6-cache-08 . . . . . . . . . . . <span class="insert">39</span></td><td class="lineno" valign="top"></td></tr>
186      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.11. Since draft-ietf-httpbis-p6-cache-09 . . . . . . . . . . . <span class="delete">37</span></td><td> </td><td class="rblock">     C.11. Since draft-ietf-httpbis-p6-cache-09 . . . . . . . . . . . <span class="insert">39</span></td><td class="lineno" valign="top"></td></tr>
187      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.12. Since draft-ietf-httpbis-p6-cache-10 . . . . . . . . . . . <span class="delete">38</span></td><td> </td><td class="rblock">     C.12. Since draft-ietf-httpbis-p6-cache-10 . . . . . . . . . . . <span class="insert">40</span></td><td class="lineno" valign="top"></td></tr>
188      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.13. Since draft-ietf-httpbis-p6-cache-11 . . . . . . . . . . . <span class="delete">38</span></td><td> </td><td class="rblock">     C.13. Since draft-ietf-httpbis-p6-cache-11 . . . . . . . . . . . <span class="insert">40</span></td><td class="lineno" valign="top"></td></tr>
189      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.14. Since draft-ietf-httpbis-p6-cache-12 . . . . . . . . . . . <span class="delete">38</span></td><td> </td><td class="rblock">     C.14. Since draft-ietf-httpbis-p6-cache-12 . . . . . . . . . . . <span class="insert">40</span></td><td class="lineno" valign="top"></td></tr>
190      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.15. Since draft-ietf-httpbis-p6-cache-13 . . . . . . . . . . . <span class="delete">38</span></td><td> </td><td class="rblock">     C.15. Since draft-ietf-httpbis-p6-cache-13 . . . . . . . . . . . <span class="insert">40</span></td><td class="lineno" valign="top"></td></tr>
191      <tr><td class="lineno" valign="top"></td><td class="lblock">     C.16. Since draft-ietf-httpbis-p6-cache-14 . . . . . . . . . . . <span class="delete">38</span></td><td> </td><td class="rblock">     C.16. Since draft-ietf-httpbis-p6-cache-14 . . . . . . . . . . . <span class="insert">40</span></td><td class="lineno" valign="top"></td></tr>
192      <tr><td class="lineno" valign="top"></td><td class="lblock">   Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">39</span></td><td> </td><td class="rblock"><span class="insert">     C.17. Since draft-ietf-httpbis-p6-cache-15 . . . . . . . . . . . 41</span></td><td class="lineno" valign="top"></td></tr>
193      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   Index  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">41</span></td><td class="lineno" valign="top"></td></tr>
194      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
195      <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>
196      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
197      <tr><td class="lineno" valign="top"></td><td class="left">   HTTP is typically used for distributed information systems, where</td><td> </td><td class="right">   HTTP is typically used for distributed information systems, where</td><td class="lineno" valign="top"></td></tr>
198      <tr><td class="lineno" valign="top"></td><td class="left">   performance can be improved by the use of response caches.  This</td><td> </td><td class="right">   performance can be improved by the use of response caches.  This</td><td class="lineno" valign="top"></td></tr>
199      <tr><td class="lineno" valign="top"></td><td class="left">   document defines aspects of HTTP/1.1 related to caching and reusing</td><td> </td><td class="right">   document defines aspects of HTTP/1.1 related to caching and reusing</td><td class="lineno" valign="top"></td></tr>
200      <tr><td class="lineno" valign="top"></td><td class="left">   response messages.</td><td> </td><td class="right">   response messages.</td><td class="lineno" valign="top"></td></tr>
201      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
202      <tr><td class="lineno" valign="top"></td><td class="left">1.1.  Purpose</td><td> </td><td class="right">1.1.  Purpose</td><td class="lineno" valign="top"></td></tr>
203      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
204      <tr><td class="lineno" valign="top"></td><td class="left">   An HTTP cache is a local store of response messages and the subsystem</td><td> </td><td class="right">   An HTTP cache is a local store of response messages and the subsystem</td><td class="lineno" valign="top"></td></tr>
205      <tr><td class="lineno" valign="top"></td><td class="left">   that controls its message storage, retrieval, and deletion.  A cache</td><td> </td><td class="right">   that controls its message storage, retrieval, and deletion.  A cache</td><td class="lineno" valign="top"></td></tr>
206      <tr><td class="lineno" valign="top"></td><td class="left">   stores cacheable responses in order to reduce the response time and</td><td> </td><td class="right">   stores cacheable responses in order to reduce the response time and</td><td class="lineno" valign="top"></td></tr>
207      <tr><td class="lineno" valign="top"></td><td class="left">   network bandwidth consumption on future, equivalent requests.  Any</td><td> </td><td class="right">   network bandwidth consumption on future, equivalent requests.  Any</td><td class="lineno" valign="top"></td></tr>
208      <tr><td class="lineno" valign="top"></td><td class="left">   client or server MAY employ a cache, though a cache cannot be used by</td><td> </td><td class="right">   client or server MAY employ a cache, though a cache cannot be used by</td><td class="lineno" valign="top"></td></tr>
209      <tr><td class="lineno" valign="top"></td><td class="left">   a server that is acting as a tunnel.</td><td> </td><td class="right">   a server that is acting as a tunnel.</td><td class="lineno" valign="top"></td></tr>
210      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
211      <tr><td><a name="diff0010" /></td></tr>
212      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Caching would be useless if it did not significantly improve</span></td><td> </td><td class="rblock">   The goal of caching in HTTP/1.1 is to <span class="insert">significantly improve</span></td><td class="lineno" valign="top"></td></tr>
213      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   performance.</span>  The goal of caching in HTTP/1.1 is to <span class="delete">reuse</span> a prior</td><td> </td><td class="rblock"><span class="insert">   performance by reusing</span> a prior response message to satisfy a current</td><td class="lineno" valign="top"></td></tr>
214      <tr><td class="lineno" valign="top"></td><td class="lblock">   response message to satisfy a current request.  <span class="delete">In some cases, a</span></td><td> </td><td class="rblock">   request.  <span class="insert">A</span> stored response <span class="insert">is considered "fresh", as defined in</span></td><td class="lineno" valign="top"></td></tr>
215      <tr><td class="lineno" valign="top"></td><td class="lblock">   stored response can be reused without the <span class="delete">need</span> for <span class="delete">a network request,</span></td><td> </td><td class="rblock"><span class="insert">   Section 2.3, if the response</span> can be reused without <span class="insert">"validation"</span></td><td class="lineno" valign="top"></td></tr>
216      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   reducing</span> latency and network <span class="delete">round-trips; a "freshness" mechanism</span> is</td><td> </td><td class="rblock"><span class="insert">   (checking with</span> the <span class="insert">origin server to see if the cached response</span></td><td class="lineno" valign="top"></td></tr>
217      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">used for this purpose (see Section 2.3).  Even when</span> a <span class="delete">new request</span> is</td><td> </td><td class="rblock"><span class="insert">   remains valid</span> for <span class="insert">this request).  A fresh cache response can</span></td><td class="lineno" valign="top"></td></tr>
218      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">required,</span> it <span class="delete">is often possible to reuse all</span> or <span class="delete">parts of the payload</span></td><td> </td><td class="rblock"><span class="insert">   therefore reduce both</span> latency and network <span class="insert">transfers each time it</span> is</td><td class="lineno" valign="top"></td></tr>
219      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   of a prior response to satisfy</span> the <span class="delete">request, thereby reducing network</span></td><td> </td><td class="rblock">   <span class="insert">reused.  When</span> a <span class="insert">cached response</span> is <span class="insert">not fresh,</span> it <span class="insert">might still be</span></td><td class="lineno" valign="top"></td></tr>
220      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   bandwidth usage; a "validation" mechanism</span> is <span class="delete">used for this purpose</span></td><td> </td><td class="rblock"><span class="insert">   reusable if it can be freshened by validation (Section 2.4)</span> or <span class="insert">if</span> the</td><td class="lineno" valign="top"></td></tr>
221      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   (see Section 2.4).</span></td><td> </td><td class="rblock">   <span class="insert">origin</span> is <span class="insert">unavailable.</span></td><td class="lineno" valign="top"></td></tr>
222      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
223      <tr><td class="lineno" valign="top"></td><td class="left">1.2.  Terminology</td><td> </td><td class="right">1.2.  Terminology</td><td class="lineno" valign="top"></td></tr>
224      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
225      <tr><td class="lineno" valign="top"></td><td class="left">   This specification uses a number of terms to refer to the roles</td><td> </td><td class="right">   This specification uses a number of terms to refer to the roles</td><td class="lineno" valign="top"></td></tr>
226      <tr><td class="lineno" valign="top"></td><td class="left">   played by participants in, and objects of, HTTP caching.</td><td> </td><td class="right">   played by participants in, and objects of, HTTP caching.</td><td class="lineno" valign="top"></td></tr>
227      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
228      <tr><td class="lineno" valign="top"></td><td class="left">   cache</td><td> </td><td class="right">   cache</td><td class="lineno" valign="top"></td></tr>
229      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
230      <tr><td class="lineno" valign="top"></td><td class="left">      A conformant implementation of a HTTP cache.  Note that this</td><td> </td><td class="right">      A conformant implementation of a HTTP cache.  Note that this</td><td class="lineno" valign="top"></td></tr>
231      <tr><td class="lineno" valign="top"></td><td class="left">      implies an HTTP/1.1 cache; this specification does not define</td><td> </td><td class="right">      implies an HTTP/1.1 cache; this specification does not define</td><td class="lineno" valign="top"></td></tr>
232      <tr><td class="lineno" valign="top"></td><td class="left">      conformance for HTTP/1.0 caches.</td><td> </td><td class="right">      conformance for HTTP/1.0 caches.</td><td class="lineno" valign="top"></td></tr>
233      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
234      <tr><td class="lineno" valign="top"></td><td class="left">   shared cache</td><td> </td><td class="right">   shared cache</td><td class="lineno" valign="top"></td></tr>
235      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
236      <tr><td><a name="diff0011" /></td></tr>
237      <tr><td class="lineno" valign="top"></td><td class="lblock">      A cache that <span class="delete">is accessible</span> to more than one user; usually (but not</td><td> </td><td class="rblock">      A cache that <span class="insert">stores responses</span> to <span class="insert">be reused by</span> more than one user;</td><td class="lineno" valign="top"></td></tr>
238      <tr><td class="lineno" valign="top"></td><td class="lblock">      always) deployed as part of an intermediary.</td><td> </td><td class="rblock">      usually (but not always) deployed as part of an intermediary.</td><td class="lineno" valign="top"></td></tr>
239      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
240      <tr><td class="lineno" valign="top"></td><td class="left">   private cache</td><td> </td><td class="right">   private cache</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">      A cache that is dedicated to a single user.</td><td> </td><td class="right">      A cache that is dedicated to a single user.</td><td class="lineno" valign="top"></td></tr>
243      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
244      <tr><td class="lineno" valign="top"></td><td class="left">   cacheable</td><td> </td><td class="right">   cacheable</td><td class="lineno" valign="top"></td></tr>
245      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
246      <tr><td class="lineno" valign="top"></td><td class="left">      A response is cacheable if a cache is allowed to store a copy of</td><td> </td><td class="right">      A response is cacheable if a cache is allowed to store a copy of</td><td class="lineno" valign="top"></td></tr>
247      <tr><td class="lineno" valign="top"></td><td class="left">      the response message for use in answering subsequent requests.</td><td> </td><td class="right">      the response message for use in answering subsequent requests.</td><td class="lineno" valign="top"></td></tr>
248      <tr><td class="lineno" valign="top"></td><td class="left">      Even when a response is cacheable, there might be additional</td><td> </td><td class="right">      Even when a response is cacheable, there might be additional</td><td class="lineno" valign="top"></td></tr>
249      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
250      <tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 6, line 52</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 6, line 52</em></th><td></td></tr>
251      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
252      <tr><td class="lineno" valign="top"></td><td class="left">   stale</td><td> </td><td class="right">   stale</td><td class="lineno" valign="top"></td></tr>
253      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
254      <tr><td class="lineno" valign="top"></td><td class="left">      A response is stale if its age has passed its freshness lifetime</td><td> </td><td class="right">      A response is stale if its age has passed its freshness lifetime</td><td class="lineno" valign="top"></td></tr>
255      <tr><td class="lineno" valign="top"></td><td class="left">      (either explicit or heuristic).</td><td> </td><td class="right">      (either explicit or heuristic).</td><td class="lineno" valign="top"></td></tr>
256      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
257      <tr><td class="lineno" valign="top"></td><td class="left">   validator</td><td> </td><td class="right">   validator</td><td class="lineno" valign="top"></td></tr>
258      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
259      <tr><td class="lineno" valign="top"></td><td class="left">      A protocol element (e.g., an entity-tag or a Last-Modified time)</td><td> </td><td class="right">      A protocol element (e.g., an entity-tag or a Last-Modified time)</td><td class="lineno" valign="top"></td></tr>
260      <tr><td class="lineno" valign="top"></td><td class="left">      that is used to find out whether a stored response is an</td><td> </td><td class="right">      that is used to find out whether a stored response is an</td><td class="lineno" valign="top"></td></tr>
261      <tr><td><a name="diff0012" /></td></tr>
262      <tr><td class="lineno" valign="top"></td><td class="lblock">      equivalent copy of a representation.</td><td> </td><td class="rblock">      equivalent copy of a representation.  <span class="insert">See Section 2.1 of [Part4].</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"></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">   strong validator</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"></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">      A validator that is defined by the origin server such that its</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">      current value will change if the representation body changes;</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">      i.e., an entity-tag that is not marked as weak (Section 2.3 of</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">      [Part4]) or, if no entity-tag is provided, a Last-Modified value</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">      that is strong in the sense defined by Section 2.2.2 of [Part4].</span></td><td class="lineno" valign="top"></td></tr>
271      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
272      <tr><td class="lineno" valign="top"></td><td class="left">1.3.  Requirements</td><td> </td><td class="right">1.3.  Requirements</td><td class="lineno" valign="top"></td></tr>
273      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
274      <tr><td class="lineno" valign="top"></td><td class="left">   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",</td><td> </td><td class="right">   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",</td><td class="lineno" valign="top"></td></tr>
275      <tr><td class="lineno" valign="top"></td><td class="left">   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this</td><td> </td><td class="right">   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this</td><td class="lineno" valign="top"></td></tr>
276      <tr><td class="lineno" valign="top"></td><td class="left">   document are to be interpreted as described in [RFC2119].</td><td> </td><td class="right">   document are to be interpreted as described in [RFC2119].</td><td class="lineno" valign="top"></td></tr>
277      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
278      <tr><td class="lineno" valign="top"></td><td class="left">   An implementation is not compliant if it fails to satisfy one or more</td><td> </td><td class="right">   An implementation is not compliant if it fails to satisfy one or more</td><td class="lineno" valign="top"></td></tr>
279      <tr><td class="lineno" valign="top"></td><td class="left">   of the "MUST" or "REQUIRED" level requirements for the protocols it</td><td> </td><td class="right">   of the "MUST" or "REQUIRED" level requirements for the protocols it</td><td class="lineno" valign="top"></td></tr>
280      <tr><td class="lineno" valign="top"></td><td class="left">   implements.  An implementation that satisfies all the "MUST" or</td><td> </td><td class="right">   implements.  An implementation that satisfies all the "MUST" or</td><td class="lineno" valign="top"></td></tr>
281      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
282      <tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 7, line 36</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 7, line 44</em></th><td></td></tr>
283      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
284      <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>
285      <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>
286      <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>
287      <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>
288      <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>
289      <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>
290      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
291      <tr><td class="lineno" valign="top"></td><td class="left">1.4.1.  Core Rules</td><td> </td><td class="right">1.4.1.  Core Rules</td><td class="lineno" valign="top"></td></tr>
292      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
293      <tr><td><a name="diff0013" /></td></tr>
294      <tr><td class="lineno" valign="top"></td><td class="lblock">   The core rules below are defined in <span class="delete">Section 1.2.2 of </span>[Part1]:</td><td> </td><td class="rblock">   The core rules below are defined in [Part1]:</td><td class="lineno" valign="top"></td></tr>
295      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
296      <tr><td><a name="diff0014" /></td></tr>
297      <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>
298      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">     token         = &lt;token, defined in [Part1], Section 1.2.2&gt;</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
299      <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>
300      <tr><td><a name="diff0015" /></td></tr>
301      <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>
302      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">     token         = &lt;token, defined in [Part1], Section 3.2.3&gt;</span></td><td class="lineno" valign="top"></td></tr>
303      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
304      <tr><td class="lineno" valign="top"></td><td class="left">1.4.2.  ABNF Rules defined in other Parts of the Specification</td><td> </td><td class="right">1.4.2.  ABNF Rules defined in other Parts of the Specification</td><td class="lineno" valign="top"></td></tr>
305      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
306      <tr><td class="lineno" valign="top"></td><td class="left">   The ABNF rules below are defined in other parts:</td><td> </td><td class="right">   The ABNF rules below are defined in other parts:</td><td class="lineno" valign="top"></td></tr>
307      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
308      <tr><td class="lineno" valign="top"></td><td class="left">     field-name    = &lt;field-name, defined in [Part1], Section 3.2&gt;</td><td> </td><td class="right">     field-name    = &lt;field-name, defined in [Part1], Section 3.2&gt;</td><td class="lineno" valign="top"></td></tr>
309      <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>
310      <tr><td class="lineno" valign="top"></td><td class="left">     port          = &lt;port, defined in [Part1], Section 2.7&gt;</td><td> </td><td class="right">     port          = &lt;port, defined in [Part1], Section 2.7&gt;</td><td class="lineno" valign="top"></td></tr>
311      <tr><td class="lineno" valign="top"></td><td class="left">     pseudonym     = &lt;pseudonym, defined in [Part1], Section 9.9&gt;</td><td> </td><td class="right">     pseudonym     = &lt;pseudonym, defined in [Part1], Section 9.9&gt;</td><td class="lineno" valign="top"></td></tr>
312      <tr><td class="lineno" valign="top"></td><td class="left">     uri-host      = &lt;uri-host, defined in [Part1], Section 2.7&gt;</td><td> </td><td class="right">     uri-host      = &lt;uri-host, defined in [Part1], Section 2.7&gt;</td><td class="lineno" valign="top"></td></tr>
313      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
314      <tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 8, line 21</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 8, line 31</em></th><td></td></tr>
315      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
316      <tr><td class="lineno" valign="top"></td><td class="left">   If an implementation receives a delta-seconds value larger than the</td><td> </td><td class="right">   If an implementation receives a delta-seconds value larger than the</td><td class="lineno" valign="top"></td></tr>
317      <tr><td class="lineno" valign="top"></td><td class="left">   largest positive integer it can represent, or if any of its</td><td> </td><td class="right">   largest positive integer it can represent, or if any of its</td><td class="lineno" valign="top"></td></tr>
318      <tr><td class="lineno" valign="top"></td><td class="left">   subsequent calculations overflows, it MUST consider the value to be</td><td> </td><td class="right">   subsequent calculations overflows, it MUST consider the value to be</td><td class="lineno" valign="top"></td></tr>
319      <tr><td class="lineno" valign="top"></td><td class="left">   2147483648 (2^31).  Recipients parsing a delta-seconds value SHOULD</td><td> </td><td class="right">   2147483648 (2^31).  Recipients parsing a delta-seconds value SHOULD</td><td class="lineno" valign="top"></td></tr>
320      <tr><td class="lineno" valign="top"></td><td class="left">   use an arithmetic type of at least 31 bits of range, and senders MUST</td><td> </td><td class="right">   use an arithmetic type of at least 31 bits of range, and senders MUST</td><td class="lineno" valign="top"></td></tr>
321      <tr><td class="lineno" valign="top"></td><td class="left">   NOT send delta-seconds with a value greater than 2147483648.</td><td> </td><td class="right">   NOT send delta-seconds with a value greater than 2147483648.</td><td class="lineno" valign="top"></td></tr>
322      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
323      <tr><td class="lineno" valign="top"></td><td class="left">2.  Cache Operation</td><td> </td><td class="right">2.  Cache Operation</td><td class="lineno" valign="top"></td></tr>
324      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
325      <tr><td><a name="diff0016" /></td></tr>
326      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">Proper cache operation preserves the semantics of HTTP transfers</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">   ([Part2]) while eliminating the transfer of information already held</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">   in the cache.  Although caching is an entirely OPTIONAL feature of</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">   HTTP, we assume that reusing the cached response is desirable and</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">   that such reuse is the default behavior when no requirement or</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">   locally-desired configuration prevents it.  Therefore, HTTP cache</span></td><td class="lineno" valign="top"></td></tr>
332      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   requirements are focused on preventing a cache from either storing a</span></td><td class="lineno" valign="top"></td></tr>
333      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   non-reusable response or reusing a stored response inappropriately.</span></td><td class="lineno" valign="top"></td></tr>
334      <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>
335      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   Each cache entry consists of a cache key and one or more HTTP</span></td><td class="lineno" valign="top"></td></tr>
336      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   responses corresponding to prior requests that used the same key.</span></td><td class="lineno" valign="top"></td></tr>
337      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The most common form of cache entry is a successful result of a</span></td><td class="lineno" valign="top"></td></tr>
338      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   retrieval request: i.e., a 200 (OK) response containing a</span></td><td class="lineno" valign="top"></td></tr>
339      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   representation of the resource identified by the request target.</span></td><td class="lineno" valign="top"></td></tr>
340      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   However, it is also possible to cache negative results (e.g., 404 not</span></td><td class="lineno" valign="top"></td></tr>
341      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   found), incomplete results (e.g., 206 partial content), and responses</span></td><td class="lineno" valign="top"></td></tr>
342      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   to safe methods other than GET if the method's definition allows such</span></td><td class="lineno" valign="top"></td></tr>
343      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   caching and defines something suitable for use as a cache key.</span></td><td class="lineno" valign="top"></td></tr>
344      <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>
345      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   The default cache key consists of the request method and target URI.</span></td><td class="lineno" valign="top"></td></tr>
346      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   However, since HTTP caches in common use today are typically limited</span></td><td class="lineno" valign="top"></td></tr>
347      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   to caching responses to GET, most implementations simply decline</span></td><td class="lineno" valign="top"></td></tr>
348      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   other methods and use only the URI as the key.</span></td><td class="lineno" valign="top"></td></tr>
349      <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>
350      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   If a request target is subject to content negotiation, its cache</span></td><td class="lineno" valign="top"></td></tr>
351      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   entry might consist of multiple stored responses, each differentiated</span></td><td class="lineno" valign="top"></td></tr>
352      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   by a secondary key for the values of the original request's selecting</span></td><td class="lineno" valign="top"></td></tr>
353      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   header fields (Section 2.7).</span></td><td class="lineno" valign="top"></td></tr>
354      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
355      <tr><td class="lineno" valign="top"></td><td class="left">2.1.  Response Cacheability</td><td> </td><td class="right">2.1.  Response Cacheability</td><td class="lineno" valign="top"></td></tr>
356      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
357      <tr><td class="lineno" valign="top"></td><td class="left">   A cache MUST NOT store a response to any request, unless:</td><td> </td><td class="right">   A cache MUST NOT store a response to any request, unless:</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">   o  The request method is understood by the cache and defined as being</td><td> </td><td class="right">   o  The request method is understood by the cache and defined as being</td><td class="lineno" valign="top"></td></tr>
360      <tr><td class="lineno" valign="top"></td><td class="left">      cacheable, and</td><td> </td><td class="right">      cacheable, and</td><td class="lineno" valign="top"></td></tr>
361      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
362      <tr><td class="lineno" valign="top"></td><td class="left">   o  the response status code is understood by the cache, and</td><td> </td><td class="right">   o  the response status code is understood by the cache, and</td><td class="lineno" valign="top"></td></tr>
363      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
364      <tr><td class="lineno" valign="top"></td><td class="left">   o  the "no-store" cache directive (see Section 3.2) does not appear</td><td> </td><td class="right">   o  the "no-store" cache directive (see Section 3.2) does not appear</td><td class="lineno" valign="top"></td></tr>
365      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
366      <tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 9, line 12</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 9, line 50</em></th><td></td></tr>
367      <tr><td class="lineno" valign="top"></td><td class="left">      *  contains a Cache Control Extension (see Section 3.2.3) that</td><td> </td><td class="right">      *  contains a Cache Control Extension (see Section 3.2.3) that</td><td class="lineno" valign="top"></td></tr>
368      <tr><td class="lineno" valign="top"></td><td class="left">         allows it to be cached, or</td><td> </td><td class="right">         allows it to be cached, or</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">      *  has a status code that can be served with heuristic freshness</td><td> </td><td class="right">      *  has a status code that can be served with heuristic freshness</td><td class="lineno" valign="top"></td></tr>
371      <tr><td class="lineno" valign="top"></td><td class="left">         (see Section 2.3.1.1).</td><td> </td><td class="right">         (see Section 2.3.1.1).</td><td class="lineno" valign="top"></td></tr>
372      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
373      <tr><td class="lineno" valign="top"></td><td class="left">   Note that any of the requirements listed above can be overridden by a</td><td> </td><td class="right">   Note that any of the requirements listed above can be overridden by a</td><td class="lineno" valign="top"></td></tr>
374      <tr><td class="lineno" valign="top"></td><td class="left">   cache-control extension; see Section 3.2.3.</td><td> </td><td class="right">   cache-control extension; see Section 3.2.3.</td><td class="lineno" valign="top"></td></tr>
375      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
376      <tr><td class="lineno" valign="top"></td><td class="left">   In this context, a cache has "understood" a request method or a</td><td> </td><td class="right">   In this context, a cache has "understood" a request method or a</td><td class="lineno" valign="top"></td></tr>
377      <tr><td><a name="diff0017" /></td></tr>
378      <tr><td class="lineno" valign="top"></td><td class="lblock">   response status code if it <span class="delete">recognises</span> it and implements any cache-</td><td> </td><td class="rblock">   response status code if it <span class="insert">recognizes</span> it and implements any cache-</td><td class="lineno" valign="top"></td></tr>
379      <tr><td class="lineno" valign="top"></td><td class="lblock">   specific behavior.  <span class="delete">In particular, 206 Partial Content responses</span></td><td> </td><td class="rblock">   specific behavior.</td><td class="lineno" valign="top"></td></tr>
380      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   cannot be cached by an implementation that does not handle partial</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
381      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   content (see Section 2.1.1).</span></td><td> </td><td class="rblock"></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><a name="diff0018" /></td></tr>
384      <tr><td class="lineno" valign="top"></td><td class="lblock">   Note that in normal operation, most caches will not store a response</td><td> </td><td class="rblock">   Note that<span class="insert">,</span> in normal operation, most caches will not store a response</td><td class="lineno" valign="top"></td></tr>
385      <tr><td class="lineno" valign="top"></td><td class="left">   that has neither a cache validator nor an explicit expiration time,</td><td> </td><td class="right">   that has neither a cache validator nor an explicit expiration time,</td><td class="lineno" valign="top"></td></tr>
386      <tr><td class="lineno" valign="top"></td><td class="left">   as such responses are not usually useful to store.  However, caches</td><td> </td><td class="right">   as such responses are not usually useful to store.  However, caches</td><td class="lineno" valign="top"></td></tr>
387      <tr><td class="lineno" valign="top"></td><td class="left">   are not prohibited from storing such responses.</td><td> </td><td class="right">   are not prohibited from storing such responses.</td><td class="lineno" valign="top"></td></tr>
388      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
389      <tr><td><a name="diff0019" /></td></tr>
390      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">2.1.1.  Storing Partial and Incomplete Responses</span></td><td> </td><td class="rblock">   A response <span class="insert">message is considered complete when all</span> of <span class="insert">the octets</span></td><td class="lineno" valign="top"></td></tr>
391      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"><span class="insert">   indicated by the message framing ([Part1]) are received prior to the</span></td><td class="lineno" valign="top"></td></tr>
392      <tr><td class="lineno" valign="top"></td><td class="lblock">   A <span class="delete">cache that receives an incomplete</span> response <span class="delete">(for example, with fewer</span></td><td> </td><td class="rblock"><span class="insert">   connection being closed.  If the request is GET, the response status</span></td><td class="lineno" valign="top"></td></tr>
393      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   bytes</span> of <span class="delete">data than specified in a Content-Length</span> header <span class="delete">field) can</span></td><td> </td><td class="rblock"><span class="insert">   is 200 (OK), and the entire response</span> header <span class="insert">block has been received,</span></td><td class="lineno" valign="top"></td></tr>
394      <tr><td class="lineno" valign="top"></td><td class="lblock">   store the <span class="delete">response, but MUST treat it</span> as a <span class="delete">partial</span> response <span class="delete">[Part5].</span></td><td> </td><td class="rblock"><span class="insert">   a cache MAY</span> store <span class="insert">an incomplete response message-body if</span> the <span class="insert">cache</span></td><td class="lineno" valign="top"></td></tr>
395      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Partial responses can</span> be <span class="delete">combined</span> as <span class="delete">described in Section 4 of</span></td><td> </td><td class="rblock"><span class="insert">   entry is recorded</span> as <span class="insert">incomplete.  Likewise,</span> a <span class="insert">206 (Partial Content)</span></td><td class="lineno" valign="top"></td></tr>
396      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   [Part5]; the result might be</span> a <span class="delete">full response or might still be</span></td><td> </td><td class="rblock">   response <span class="insert">MAY</span> be <span class="insert">stored</span> as <span class="insert">if it were an incomplete 200 (OK) cache</span></td><td class="lineno" valign="top"></td></tr>
397      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   partial.  A</span> cache MUST NOT <span class="delete">return a</span> partial <span class="delete">response to a client</span></td><td> </td><td class="rblock"><span class="insert">   entry.  However,</span> a cache MUST NOT <span class="insert">store incomplete or</span> partial <span class="insert">content</span></td><td class="lineno" valign="top"></td></tr>
398      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   without explicitly marking</span> it <span class="delete">as such using</span> the <span class="delete">206 (Partial Content)</span></td><td> </td><td class="rblock"><span class="insert">   responses if</span> it <span class="insert">does not support</span> the <span class="insert">Range and Content-Range header</span></td><td class="lineno" valign="top"></td></tr>
399      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   status code.</span></td><td> </td><td class="rblock"><span class="insert">   fields or if it does not understand the range units used in those</span></td><td class="lineno" valign="top"></td></tr>
400      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   fields.</span></td><td class="lineno" valign="top"></td></tr>
401      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
402      <tr><td><a name="diff0020" /></td></tr>
403      <tr><td class="lineno" valign="top"></td><td class="lblock">   A cache <span class="delete">that does not support the Range</span> and <span class="delete">Content-Range header</span></td><td> </td><td class="rblock">   A cache <span class="insert">MAY complete a stored incomplete response by making a</span></td><td class="lineno" valign="top"></td></tr>
404      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   fields</span> MUST NOT <span class="delete">store</span> incomplete or partial <span class="delete">responses.</span></td><td> </td><td class="rblock"><span class="insert">   subsequent range request ([Part5])</span> and <span class="insert">combining the successful</span></td><td class="lineno" valign="top"></td></tr>
405      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   response with the stored entry, as defined in Section 2.8.  A cache</span></td><td class="lineno" valign="top"></td></tr>
406      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   MUST NOT <span class="insert">use an</span> incomplete <span class="insert">response to answer requests unless the</span></td><td class="lineno" valign="top"></td></tr>
407      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   response has been made complete</span> or <span class="insert">the request is</span> partial <span class="insert">and</span></td><td class="lineno" valign="top"></td></tr>
408      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   specifies a range that is wholly within the incomplete response.  A</span></td><td class="lineno" valign="top"></td></tr>
409      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   cache MUST NOT send a partial response to a client without explicitly</span></td><td class="lineno" valign="top"></td></tr>
410      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   marking it as such using the 206 (Partial Content) status code.</span></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">2.2.  Constructing Responses from Caches</td><td> </td><td class="right">2.2.  Constructing Responses from Caches</td><td class="lineno" valign="top"></td></tr>
413      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
414      <tr><td class="lineno" valign="top"></td><td class="left">   For a presented request, a cache MUST NOT return a stored response,</td><td> </td><td class="right">   For a presented request, a cache MUST NOT return a stored response,</td><td class="lineno" valign="top"></td></tr>
415      <tr><td class="lineno" valign="top"></td><td class="left">   unless:</td><td> </td><td class="right">   unless:</td><td class="lineno" valign="top"></td></tr>
416      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
417      <tr><td class="lineno" valign="top"></td><td class="left">   o  The presented effective request URI (Section 4.3 of [Part1]) and</td><td> </td><td class="right">   o  The presented effective request URI (Section 4.3 of [Part1]) and</td><td class="lineno" valign="top"></td></tr>
418      <tr><td class="lineno" valign="top"></td><td class="left">      that of the stored response match, and</td><td> </td><td class="right">      that of the stored response match, and</td><td class="lineno" valign="top"></td></tr>
419      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
420      <tr><td class="lineno" valign="top"></td><td class="left">   o  the request method associated with the stored response allows it</td><td> </td><td class="right">   o  the request method associated with the stored response allows it</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-l7" /><small>skipping to change at</small><em> page 12, line 22</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 13, line 19</em></th><td></td></tr>
423      <tr><td class="lineno" valign="top"></td><td class="left">   used (including the following in Section 8 of [Part2]: 200, 203, 206,</td><td> </td><td class="right">   used (including the following in Section 8 of [Part2]: 200, 203, 206,</td><td class="lineno" valign="top"></td></tr>
424      <tr><td class="lineno" valign="top"></td><td class="left">   300, 301 and 410), a cache MAY calculate a heuristic expiration time.</td><td> </td><td class="right">   300, 301 and 410), a cache MAY calculate a heuristic expiration time.</td><td class="lineno" valign="top"></td></tr>
425      <tr><td class="lineno" valign="top"></td><td class="left">   A cache MUST NOT use heuristics to determine freshness for responses</td><td> </td><td class="right">   A cache MUST NOT use heuristics to determine freshness for responses</td><td class="lineno" valign="top"></td></tr>
426      <tr><td class="lineno" valign="top"></td><td class="left">   with status codes that do not explicitly allow it.</td><td> </td><td class="right">   with status codes that do not explicitly allow it.</td><td class="lineno" valign="top"></td></tr>
427      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
428      <tr><td class="lineno" valign="top"></td><td class="left">   When a heuristic is used to calculate freshness lifetime, a cache</td><td> </td><td class="right">   When a heuristic is used to calculate freshness lifetime, a cache</td><td class="lineno" valign="top"></td></tr>
429      <tr><td class="lineno" valign="top"></td><td class="left">   SHOULD attach a Warning header field with a 113 warn-code to the</td><td> </td><td class="right">   SHOULD attach a Warning header field with a 113 warn-code to the</td><td class="lineno" valign="top"></td></tr>
430      <tr><td class="lineno" valign="top"></td><td class="left">   response if its current_age is more than 24 hours and such a warning</td><td> </td><td class="right">   response if its current_age is more than 24 hours and such a warning</td><td class="lineno" valign="top"></td></tr>
431      <tr><td class="lineno" valign="top"></td><td class="left">   is not already present.</td><td> </td><td class="right">   is not already present.</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="diff0021" /></td></tr>
434      <tr><td class="lineno" valign="top"></td><td class="lblock">   Also, if the response has a Last-Modified header field (Section 2.<span class="delete">1</span></td><td> </td><td class="rblock">   Also, if the response has a Last-Modified header field (Section 2.<span class="insert">2</span></td><td class="lineno" valign="top"></td></tr>
435      <tr><td class="lineno" valign="top"></td><td class="left">   of [Part4]), a cache SHOULD NOT use a heuristic expiration value that</td><td> </td><td class="right">   of [Part4]), a cache SHOULD NOT use a heuristic expiration value that</td><td class="lineno" valign="top"></td></tr>
436      <tr><td class="lineno" valign="top"></td><td class="left">   is more than some fraction of the interval since that time.  A</td><td> </td><td class="right">   is more than some fraction of the interval since that time.  A</td><td class="lineno" valign="top"></td></tr>
437      <tr><td class="lineno" valign="top"></td><td class="left">   typical setting of this fraction might be 10%.</td><td> </td><td class="right">   typical setting of this fraction might be 10%.</td><td class="lineno" valign="top"></td></tr>
438      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
439      <tr><td class="lineno" valign="top"></td><td class="left">      Note: RFC 2616 ([RFC2616], Section 13.9) required that caches do</td><td> </td><td class="right">      Note: RFC 2616 ([RFC2616], Section 13.9) required that caches do</td><td class="lineno" valign="top"></td></tr>
440      <tr><td class="lineno" valign="top"></td><td class="left">      not calculate heuristic freshness for URIs with query components</td><td> </td><td class="right">      not calculate heuristic freshness for URIs with query components</td><td class="lineno" valign="top"></td></tr>
441      <tr><td class="lineno" valign="top"></td><td class="left">      (i.e., those containing '?').  In practice, this has not been</td><td> </td><td class="right">      (i.e., those containing '?').  In practice, this has not been</td><td class="lineno" valign="top"></td></tr>
442      <tr><td class="lineno" valign="top"></td><td class="left">      widely implemented.  Therefore, servers are encouraged to send</td><td> </td><td class="right">      widely implemented.  Therefore, servers are encouraged to send</td><td class="lineno" valign="top"></td></tr>
443      <tr><td class="lineno" valign="top"></td><td class="left">      explicit directives (e.g., Cache-Control: no-cache) if they wish</td><td> </td><td class="right">      explicit directives (e.g., Cache-Control: no-cache) if they wish</td><td class="lineno" valign="top"></td></tr>
444      <tr><td class="lineno" valign="top"></td><td class="left">      to preclude caching.</td><td> </td><td class="right">      to preclude caching.</td><td class="lineno" valign="top"></td></tr>
445      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
446      <tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 14, line 16</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 15, line 8</em></th><td></td></tr>
447      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
448      <tr><td class="lineno" valign="top"></td><td class="left">     corrected_initial_age = max(apparent_age, corrected_age_value);</td><td> </td><td class="right">     corrected_initial_age = max(apparent_age, corrected_age_value);</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">   The current_age of a stored response can then be calculated by adding</td><td> </td><td class="right">   The current_age of a stored response can then be calculated by adding</td><td class="lineno" valign="top"></td></tr>
451      <tr><td class="lineno" valign="top"></td><td class="left">   the amount of time (in seconds) since the stored response was last</td><td> </td><td class="right">   the amount of time (in seconds) since the stored response was last</td><td class="lineno" valign="top"></td></tr>
452      <tr><td class="lineno" valign="top"></td><td class="left">   validated by the origin server to the corrected_initial_age.</td><td> </td><td class="right">   validated by the origin server to the corrected_initial_age.</td><td class="lineno" valign="top"></td></tr>
453      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
454      <tr><td class="lineno" valign="top"></td><td class="left">     resident_time = now - response_time;</td><td> </td><td class="right">     resident_time = now - response_time;</td><td class="lineno" valign="top"></td></tr>
455      <tr><td class="lineno" valign="top"></td><td class="left">     current_age = corrected_initial_age + resident_time;</td><td> </td><td class="right">     current_age = corrected_initial_age + resident_time;</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><a name="diff0022" /></td></tr>
458      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">Additional rules for requirements on parsing and encoding of dates</span></td><td class="lineno" valign="top"></td></tr>
459      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   and other potential problems with date encodings include:</span></td><td class="lineno" valign="top"></td></tr>
460      <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>
461      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  HTTP/1.1 clients and caches SHOULD assume that an RFC-850 date</span></td><td class="lineno" valign="top"></td></tr>
462      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      which appears to be more than 50 years in the future is in fact in</span></td><td class="lineno" valign="top"></td></tr>
463      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      the past (this helps solve the "year 2000" problem).</span></td><td class="lineno" valign="top"></td></tr>
464      <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>
465      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  Although all date formats are specified to be case-sensitive,</span></td><td class="lineno" valign="top"></td></tr>
466      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      recipients SHOULD match day, week and timezone names case-</span></td><td class="lineno" valign="top"></td></tr>
467      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      insensitively.</span></td><td class="lineno" valign="top"></td></tr>
468      <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>
469      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  An HTTP/1.1 implementation MAY internally represent a parsed</span></td><td class="lineno" valign="top"></td></tr>
470      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      Expires date as earlier than the proper value, but MUST NOT</span></td><td class="lineno" valign="top"></td></tr>
471      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      internally represent a parsed Expires date as later than the</span></td><td class="lineno" valign="top"></td></tr>
472      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      proper value.</span></td><td class="lineno" valign="top"></td></tr>
473      <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>
474      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  All expiration-related calculations MUST be done in GMT.  The</span></td><td class="lineno" valign="top"></td></tr>
475      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      local time zone MUST NOT influence the calculation or comparison</span></td><td class="lineno" valign="top"></td></tr>
476      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      of an age or expiration time.</span></td><td class="lineno" valign="top"></td></tr>
477      <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>
478      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   o  If an HTTP header field incorrectly carries a date value with a</span></td><td class="lineno" valign="top"></td></tr>
479      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      time zone other than GMT, it MUST be converted into GMT using the</span></td><td class="lineno" valign="top"></td></tr>
480      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">      most conservative possible conversion.</span></td><td class="lineno" valign="top"></td></tr>
481      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
482      <tr><td class="lineno" valign="top"></td><td class="left">2.3.3.  Serving Stale Responses</td><td> </td><td class="right">2.3.3.  Serving Stale Responses</td><td class="lineno" valign="top"></td></tr>
483      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
484      <tr><td class="lineno" valign="top"></td><td class="left">   A "stale" response is one that either has explicit expiry information</td><td> </td><td class="right">   A "stale" response is one that either has explicit expiry information</td><td class="lineno" valign="top"></td></tr>
485      <tr><td class="lineno" valign="top"></td><td class="left">   or is allowed to have heuristic expiry calculated, but is not fresh</td><td> </td><td class="right">   or is allowed to have heuristic expiry calculated, but is not fresh</td><td class="lineno" valign="top"></td></tr>
486      <tr><td class="lineno" valign="top"></td><td class="left">   according to the calculations in Section 2.3.</td><td> </td><td class="right">   according to the calculations in Section 2.3.</td><td class="lineno" valign="top"></td></tr>
487      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
488      <tr><td class="lineno" valign="top"></td><td class="left">   A cache MUST NOT return a stale response if it is prohibited by an</td><td> </td><td class="right">   A cache MUST NOT return a stale response if it is prohibited by an</td><td class="lineno" valign="top"></td></tr>
489      <tr><td class="lineno" valign="top"></td><td class="left">   explicit in-protocol directive (e.g., by a "no-store" or "no-cache"</td><td> </td><td class="right">   explicit in-protocol directive (e.g., by a "no-store" or "no-cache"</td><td class="lineno" valign="top"></td></tr>
490      <tr><td class="lineno" valign="top"></td><td class="left">   cache directive, a "must-revalidate" cache-response-directive, or an</td><td> </td><td class="right">   cache directive, a "must-revalidate" cache-response-directive, or an</td><td class="lineno" valign="top"></td></tr>
491      <tr><td class="lineno" valign="top"></td><td class="left">   applicable "s-maxage" or "proxy-revalidate" cache-response-directive;</td><td> </td><td class="right">   applicable "s-maxage" or "proxy-revalidate" cache-response-directive;</td><td class="lineno" valign="top"></td></tr>
492      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
493      <tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 15, line 19</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 16, line 36</em></th><td></td></tr>
494      <tr><td class="lineno" valign="top"></td><td class="left">   available.</td><td> </td><td class="right">   available.</td><td class="lineno" valign="top"></td></tr>
495      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
496      <tr><td class="lineno" valign="top"></td><td class="left">   Additionally, a cache SHOULD add an If-None-Match header field whose</td><td> </td><td class="right">   Additionally, a cache SHOULD add an If-None-Match header field whose</td><td class="lineno" valign="top"></td></tr>
497      <tr><td class="lineno" valign="top"></td><td class="left">   value is that of the ETag header field(s) from all responses stored</td><td> </td><td class="right">   value is that of the ETag header field(s) from all responses stored</td><td class="lineno" valign="top"></td></tr>
498      <tr><td class="lineno" valign="top"></td><td class="left">   for the requested URI, if present.  However, if any of the stored</td><td> </td><td class="right">   for the requested URI, if present.  However, if any of the stored</td><td class="lineno" valign="top"></td></tr>
499      <tr><td class="lineno" valign="top"></td><td class="left">   responses contains only partial content, the cache SHOULD NOT include</td><td> </td><td class="right">   responses contains only partial content, the cache SHOULD NOT include</td><td class="lineno" valign="top"></td></tr>
500      <tr><td class="lineno" valign="top"></td><td class="left">   its entity-tag in the If-None-Match header field unless the request</td><td> </td><td class="right">   its entity-tag in the If-None-Match header field unless the request</td><td class="lineno" valign="top"></td></tr>
501      <tr><td class="lineno" valign="top"></td><td class="left">   is for a range that would be fully satisfied by that stored response.</td><td> </td><td class="right">   is for a range that would be fully satisfied by that stored response.</td><td class="lineno" valign="top"></td></tr>
502      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
503      <tr><td class="lineno" valign="top"></td><td class="left">   A 304 (Not Modified) response status code indicates that the stored</td><td> </td><td class="right">   A 304 (Not Modified) response status code indicates that the stored</td><td class="lineno" valign="top"></td></tr>
504      <tr><td><a name="diff0023" /></td></tr>
505      <tr><td class="lineno" valign="top"></td><td class="lblock">   response can be updated and reused; see Section 2.<span class="delete">8</span>.</td><td> </td><td class="rblock">   response can be updated and reused; see Section 2.<span class="insert">9</span>.</td><td class="lineno" valign="top"></td></tr>
506      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
507      <tr><td class="lineno" valign="top"></td><td class="left">   A full response (i.e., one with a response body) indicates that none</td><td> </td><td class="right">   A full response (i.e., one with a response body) indicates that none</td><td class="lineno" valign="top"></td></tr>
508      <tr><td class="lineno" valign="top"></td><td class="left">   of the stored responses nominated in the conditional request is</td><td> </td><td class="right">   of the stored responses nominated in the conditional request is</td><td class="lineno" valign="top"></td></tr>
509      <tr><td class="lineno" valign="top"></td><td class="left">   suitable.  Instead, a cache SHOULD use the full response to satisfy</td><td> </td><td class="right">   suitable.  Instead, a cache SHOULD use the full response to satisfy</td><td class="lineno" valign="top"></td></tr>
510      <tr><td><a name="diff0024" /></td></tr>
511      <tr><td class="lineno" valign="top"></td><td class="lblock">   the request and MAY replace the stored response.</td><td> </td><td class="rblock">   the request and MAY replace the stored response<span class="insert">(s)</span>.</td><td class="lineno" valign="top"></td></tr>
512      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
513      <tr><td class="lineno" valign="top"></td><td class="left">   If a cache receives a 5xx response while attempting to validate a</td><td> </td><td class="right">   If a cache receives a 5xx response while attempting to validate a</td><td class="lineno" valign="top"></td></tr>
514      <tr><td class="lineno" valign="top"></td><td class="left">   response, it MAY either forward this response to the requesting</td><td> </td><td class="right">   response, it MAY either forward this response to the requesting</td><td class="lineno" valign="top"></td></tr>
515      <tr><td class="lineno" valign="top"></td><td class="left">   client, or act as if the server failed to respond.  In the latter</td><td> </td><td class="right">   client, or act as if the server failed to respond.  In the latter</td><td class="lineno" valign="top"></td></tr>
516      <tr><td class="lineno" valign="top"></td><td class="left">   case, it MAY return a previously stored response (see Section 2.3.3).</td><td> </td><td class="right">   case, it MAY return a previously stored response (see Section 2.3.3).</td><td class="lineno" valign="top"></td></tr>
517      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
518      <tr><td class="lineno" valign="top"></td><td class="left">2.5.  Request Methods that Invalidate</td><td> </td><td class="right">2.5.  Request Methods that Invalidate</td><td class="lineno" valign="top"></td></tr>
519      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
520      <tr><td class="lineno" valign="top"></td><td class="left">   Because unsafe request methods (Section 7.1.1 of [Part2]) such as</td><td> </td><td class="right">   Because unsafe request methods (Section 7.1.1 of [Part2]) such as</td><td class="lineno" valign="top"></td></tr>
521      <tr><td class="lineno" valign="top"></td><td class="left">   PUT, POST or DELETE have the potential for changing state on the</td><td> </td><td class="right">   PUT, POST or DELETE have the potential for changing state on the</td><td class="lineno" valign="top"></td></tr>
522      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
523      <tr bgcolor="gray" ><td></td><th><a name="part-l10" /><small>skipping to change at</small><em> page 17, line 30</em></th><th> </th><th><a name="part-r10" /><small>skipping to change at</small><em> page 18, line 48</em></th><td></td></tr>
524      <tr><td class="lineno" valign="top"></td><td class="left">   the selected response.</td><td> </td><td class="right">   the selected response.</td><td class="lineno" valign="top"></td></tr>
525      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
526      <tr><td class="lineno" valign="top"></td><td class="left">   If multiple selected responses are available, the most recent</td><td> </td><td class="right">   If multiple selected responses are available, the most recent</td><td class="lineno" valign="top"></td></tr>
527      <tr><td class="lineno" valign="top"></td><td class="left">   response (as determined by the Date header field) is used; see</td><td> </td><td class="right">   response (as determined by the Date header field) is used; see</td><td class="lineno" valign="top"></td></tr>
528      <tr><td class="lineno" valign="top"></td><td class="left">   Section 2.2.</td><td> </td><td class="right">   Section 2.2.</td><td class="lineno" valign="top"></td></tr>
529      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
530      <tr><td class="lineno" valign="top"></td><td class="left">   If no selected response is available, the cache MAY forward the</td><td> </td><td class="right">   If no selected response is available, the cache MAY forward the</td><td class="lineno" valign="top"></td></tr>
531      <tr><td class="lineno" valign="top"></td><td class="left">   presented request to the origin server in a conditional request; see</td><td> </td><td class="right">   presented request to the origin server in a conditional request; see</td><td class="lineno" valign="top"></td></tr>
532      <tr><td class="lineno" valign="top"></td><td class="left">   Section 2.4.</td><td> </td><td class="right">   Section 2.4.</td><td class="lineno" valign="top"></td></tr>
533      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
534      <tr><td><a name="diff0025" /></td></tr>
535      <tr><td class="lineno" valign="top"></td><td class="lblock">2.8.  Combining <span class="delete">Responses</span></td><td> </td><td class="rblock">2.8.  Combining <span class="insert">Partial Content</span></td><td class="lineno" valign="top"></td></tr>
536      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
537      <tr><td><a name="diff0026" /></td></tr>
538      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">When a cache receives a 304 (Not Modified)</span> response <span class="delete">or</span> a <span class="delete">206 (Partial</span></td><td> </td><td class="rblock">   <span class="insert">A</span> response <span class="insert">might transfer only</span> a <span class="insert">partial representation if the</span></td><td class="lineno" valign="top"></td></tr>
539      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Content) response (in this section, the "new" response"), it needs to</span></td><td> </td><td class="rblock"><span class="insert">   connection closed prematurely or if</span> the <span class="insert">request used one or more</span></td><td class="lineno" valign="top"></td></tr>
540      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   create an updated response by combining</span> the stored <span class="delete">response with the</span></td><td> </td><td class="rblock"><span class="insert">   Range specifiers ([Part5]).  After several such transfers, a cache</span></td><td class="lineno" valign="top"></td></tr>
541      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   new one, so</span> that <span class="delete">the updated</span> response <span class="delete">can be used</span> to satisfy <span class="delete">the</span></td><td> </td><td class="rblock"><span class="insert">   might have received several ranges of the same representation.  A</span></td><td class="lineno" valign="top"></td></tr>
542      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   request,</span> and <span class="delete">potentially update</span> the <span class="delete">cached response.</span></td><td> </td><td class="rblock"><span class="insert">   cache MAY combine these ranges into a single</span> stored <span class="insert">response, and</span></td><td class="lineno" valign="top"></td></tr>
543      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   reuse</span> that response to satisfy <span class="insert">later requests, if they all share the</span></td><td class="lineno" valign="top"></td></tr>
544      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   same strong validator</span> and the <span class="insert">cache complies with the client</span></td><td class="lineno" valign="top"></td></tr>
545      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   requirements in Section 4 of [Part5].</span></td><td class="lineno" valign="top"></td></tr>
546      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
547      <tr><td><a name="diff0027" /></td></tr>
548      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">If</span> the new response <span class="delete">contains an ETag, it identifies the</span> stored</td><td> </td><td class="rblock">   <span class="insert">When combining</span> the new response <span class="insert">with one or more</span> stored <span class="insert">responses, a</span></td><td class="lineno" valign="top"></td></tr>
549      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">response to use.  [[TODO-mention-CL: might need language about</span></td><td> </td><td class="rblock"><span class="insert">   cache MUST:</span></td><td class="lineno" valign="top"></td></tr>
550      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   Content-Location here]][[TODO-select-for-combine: Shouldn't this be</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">   the selected response?]]</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="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
553      <tr><td><a name="diff0028" /></td></tr>
554      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">When</span> the <span class="delete">new response's status code is 206 (partial content), a cache</span></td><td> </td><td class="rblock">   <span class="insert">o  delete any Warning header fields in</span> the <span class="insert">stored</span> response with <span class="insert">warn-</span></td><td class="lineno" valign="top"></td></tr>
555      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   MUST NOT combine it with the old</span> response <span class="delete">if either response does not</span></td><td> </td><td class="rblock"><span class="insert">      code 1xx</span> (see Section <span class="insert">3.6);</span></td><td class="lineno" valign="top"></td></tr>
556      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   have a validator, and MUST NOT combine it</span> with <span class="delete">the old response when</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
557      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   those validators do not match with the strong comparison function</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
558      <tr><td class="lineno" valign="top"></td><td class="lblock">   (see Section <span class="delete">2.2.2 of [Part4]).</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
559      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
560      <tr><td><a name="diff0029" /></td></tr>
561      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">The stored response header fields are used as those of the updated</span></td><td> </td><td class="rblock">   o  <span class="insert">retain</span> any Warning header fields <span class="insert">in the stored response</span> with warn-</td><td class="lineno" valign="top"></td></tr>
562      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   response, except that</span></td><td> </td><td class="rblock">      code <span class="insert">2xx; and,</span></td><td class="lineno" valign="top"></td></tr>
563      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  <span class="delete">a cache MUST delete</span> any <span class="delete">stored</span> Warning header fields with warn-</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
564      <tr><td class="lineno" valign="top"></td><td class="lblock">      code <span class="delete">1xx (see Section 3.6).</span></td><td> </td><td class="rblock"></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><a name="diff0030" /></td></tr>
567      <tr><td class="lineno" valign="top"></td><td class="lblock">   o  <span class="delete">a cache MUST retain any stored Warning</span> header fields <span class="delete">with warn-</span></td><td> </td><td class="rblock">   o  <span class="insert">use other header fields provided in the new response, aside from</span></td><td class="lineno" valign="top"></td></tr>
568      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      code 2xx.</span></td><td> </td><td class="rblock"><span class="insert">      Content-Range, to replace all instances of the corresponding</span></td><td class="lineno" valign="top"></td></tr>
569      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">      header fields <span class="insert">in the stored response.</span></td><td class="lineno" valign="top"></td></tr>
570      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
571      <tr><td><a name="diff0031" /></td></tr>
572      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">o  a cache MUST use other header fields provided in the new response</span></td><td> </td><td class="rblock"><span class="insert">2.9.  Freshening Responses</span></td><td class="lineno" valign="top"></td></tr>
573      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      to replace all instances of the corresponding header fields from</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
574      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">      the stored response.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
575      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
576      <tr><td><a name="diff0032" /></td></tr>
577      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A</span> cache <span class="delete">MUST use</span> the updated response <span class="delete">header fields to replace those</span></td><td> </td><td class="rblock">   <span class="insert">When a</span> cache <span class="insert">receives a 304 (Not Modified) response and already has</span></td><td class="lineno" valign="top"></td></tr>
578      <tr><td class="lineno" valign="top"></td><td class="lblock">   of the stored response <span class="delete">(unless</span> the stored response is <span class="delete">removed).  In</span></td><td> </td><td class="rblock"><span class="insert">   one or more stored 200 (OK) responses for</span> the <span class="insert">same cache key, the</span></td><td class="lineno" valign="top"></td></tr>
579      <tr><td class="lineno" valign="top"></td><td class="lblock">   the <span class="delete">case</span> of <span class="delete">a 206</span> response, a cache <span class="delete">MAY store</span> the <span class="delete">combined</span></td><td> </td><td class="rblock"><span class="insert">   cache needs to identify which of the stored responses are</span> updated <span class="insert">by</span></td><td class="lineno" valign="top"></td></tr>
580      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   representation.</span></td><td> </td><td class="rblock"><span class="insert">   this new</span> response <span class="insert">and then update the stored response(s) with the new</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">   information provided in the 304 response.</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"></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">   o  If the new response contains a strong validator, then that strong</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">      validator identifies the selected representation.  All of the</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">      stored responses with the same strong validator are selected.  If</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">      none</span> of the stored <span class="insert">responses contain the same strong validator,</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">      then this new</span> response <span class="insert">corresponds to a new selected</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">      representation and MUST NOT update</span> the <span class="insert">existing</span> stored <span class="insert">responses.</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"></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">   o  If the new</span> response <span class="insert">contains a weak validator and that validator</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">      corresponds to one of the cache's stored responses, then the most</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">      recent of those matching stored responses</span> is <span class="insert">selected.</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">   o  If</span> the <span class="insert">new response does not include any form</span> of <span class="insert">validator, there</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">      is only one stored</span> response, <span class="insert">and that stored response also lacks</span> a</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">validator, then that stored response is selected.</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"></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">   If a stored response is selected for update, the</span> cache <span class="insert">MUST:</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">   o  delete any Warning header fields in</span> the <span class="insert">stored response with warn-</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">      code 1xx (see Section 3.6);</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">   o  retain any Warning header fields in the stored response with warn-</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">      code 2xx; and,</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"></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">   o  use other header fields provided in the 304 response to replace</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">      all instances of the corresponding header fields in the stored</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">      response.</span></td><td class="lineno" valign="top"></td></tr>
609      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
610      <tr><td class="lineno" valign="top"></td><td class="left">3.  Header Field Definitions</td><td> </td><td class="right">3.  Header Field Definitions</td><td class="lineno" valign="top"></td></tr>
611      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
612      <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>
613      <tr><td class="lineno" valign="top"></td><td class="left">   fields related to caching.</td><td> </td><td class="right">   fields related to caching.</td><td class="lineno" valign="top"></td></tr>
614      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
615      <tr><td class="lineno" valign="top"></td><td class="left">3.1.  Age</td><td> </td><td class="right">3.1.  Age</td><td class="lineno" valign="top"></td></tr>
616      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
617      <tr><td class="lineno" valign="top"></td><td class="left">   The "Age" header field conveys the sender's estimate of the amount of</td><td> </td><td class="right">   The "Age" header field conveys the sender's estimate of the amount of</td><td class="lineno" valign="top"></td></tr>
618      <tr><td class="lineno" valign="top"></td><td class="left">   time since the response was generated or successfully validated at</td><td> </td><td class="right">   time since the response was generated or successfully validated at</td><td class="lineno" valign="top"></td></tr>
619      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
620      <tr bgcolor="gray" ><td></td><th><a name="part-l11" /><small>skipping to change at</small><em> page 25, line 11</em></th><th> </th><th><a name="part-r11" /><small>skipping to change at</small><em> page 27, line 11</em></th><td></td></tr>
621      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
622      <tr><td class="lineno" valign="top"></td><td class="left">   The field-value is an absolute date and time as defined by HTTP-date</td><td> </td><td class="right">   The field-value is an absolute date and time as defined by HTTP-date</td><td class="lineno" valign="top"></td></tr>
623      <tr><td class="lineno" valign="top"></td><td class="left">   in Section 6.1 of [Part1]; a sender MUST use the rfc1123-date format.</td><td> </td><td class="right">   in Section 6.1 of [Part1]; a sender MUST use the rfc1123-date format.</td><td class="lineno" valign="top"></td></tr>
624      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
625      <tr><td class="lineno" valign="top"></td><td class="left">     Expires = HTTP-date</td><td> </td><td class="right">     Expires = HTTP-date</td><td class="lineno" valign="top"></td></tr>
626      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
627      <tr><td class="lineno" valign="top"></td><td class="left">   For example</td><td> </td><td class="right">   For example</td><td class="lineno" valign="top"></td></tr>
628      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
629      <tr><td class="lineno" valign="top"></td><td class="left">     Expires: Thu, 01 Dec 1994 16:00:00 GMT</td><td> </td><td class="right">     Expires: Thu, 01 Dec 1994 16:00:00 GMT</td><td class="lineno" valign="top"></td></tr>
630      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
631      <tr><td><a name="diff0033" /></td></tr>
632      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">   <span class="insert">A cache MUST treat other invalid date formats, especially including</span></td><td class="lineno" valign="top"></td></tr>
633      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   the value "0", as in the past (i.e., "already expired").</span></td><td class="lineno" valign="top"></td></tr>
634      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock">                                                                         </td><td class="lineno" valign="top"></td></tr>
635      <tr><td class="lineno" valign="top"></td><td class="left">      Note: If a response includes a Cache-Control field with the max-</td><td> </td><td class="right">      Note: If a response includes a Cache-Control field with the max-</td><td class="lineno" valign="top"></td></tr>
636      <tr><td class="lineno" valign="top"></td><td class="left">      age directive (see Section 3.2.2), that directive overrides the</td><td> </td><td class="right">      age directive (see Section 3.2.2), that directive overrides the</td><td class="lineno" valign="top"></td></tr>
637      <tr><td class="lineno" valign="top"></td><td class="left">      Expires field.  Likewise, the s-maxage directive overrides Expires</td><td> </td><td class="right">      Expires field.  Likewise, the s-maxage directive overrides Expires</td><td class="lineno" valign="top"></td></tr>
638      <tr><td class="lineno" valign="top"></td><td class="left">      in shared caches.</td><td> </td><td class="right">      in shared caches.</td><td class="lineno" valign="top"></td></tr>
639      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
640      <tr><td><a name="diff0034" /></td></tr>
641      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A server SHOULD NOT send</span> Expires <span class="delete">dates</span> more than <span class="delete">one</span> year in the</td><td> </td><td class="rblock">   <span class="insert">Historically, HTTP required the</span> Expires <span class="insert">field-value to be no</span> more</td><td class="lineno" valign="top"></td></tr>
642      <tr><td class="lineno" valign="top"></td><td class="lblock">   future.</td><td> </td><td class="rblock">   than <span class="insert">a</span> year in the future.  <span class="insert">While longer freshness lifetimes are no</span></td><td class="lineno" valign="top"></td></tr>
643      <tr><td class="lineno" valign="top"></td><td class="lblock">                                                                         </td><td> </td><td class="rblock"><span class="insert">   longer prohibited, extremely large values have been demonstrated to</span></td><td class="lineno" valign="top"></td></tr>
644      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">A cache MUST treat other invalid date formats, especially including</span></td><td> </td><td class="rblock"><span class="insert">   cause problems (e.g., clock overflows due to use of 32-bit integers</span></td><td class="lineno" valign="top"></td></tr>
645      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   the value "0", as in the past (i.e., "already expired").</span></td><td> </td><td class="rblock"><span class="insert">   for time values), and most caches will evict a response far sooner</span></td><td class="lineno" valign="top"></td></tr>
646      <tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert">   than that.  Therefore, senders ought not produce them.</span></td><td class="lineno" valign="top"></td></tr>
647      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
648      <tr><td class="lineno" valign="top"></td><td class="left">3.4.  Pragma</td><td> </td><td class="right">3.4.  Pragma</td><td class="lineno" valign="top"></td></tr>
649      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
650      <tr><td class="lineno" valign="top"></td><td class="left">   The "Pragma" header field allows backwards compatibility with</td><td> </td><td class="right">   The "Pragma" header field allows backwards compatibility with</td><td class="lineno" valign="top"></td></tr>
651      <tr><td class="lineno" valign="top"></td><td class="left">   HTTP/1.0 caches, so that clients can specify a "no-cache" request</td><td> </td><td class="right">   HTTP/1.0 caches, so that clients can specify a "no-cache" request</td><td class="lineno" valign="top"></td></tr>
652      <tr><td class="lineno" valign="top"></td><td class="left">   that they will understand (as Cache-Control was not defined until</td><td> </td><td class="right">   that they will understand (as Cache-Control was not defined until</td><td class="lineno" valign="top"></td></tr>
653      <tr><td class="lineno" valign="top"></td><td class="left">   HTTP/1.1).  When the Cache-Control header is also present and</td><td> </td><td class="right">   HTTP/1.1).  When the Cache-Control header is also present and</td><td class="lineno" valign="top"></td></tr>
654      <tr><td class="lineno" valign="top"></td><td class="left">   understood in a request, Pragma is ignored.</td><td> </td><td class="right">   understood in a request, Pragma is ignored.</td><td class="lineno" valign="top"></td></tr>
655      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
656      <tr><td class="lineno" valign="top"></td><td class="left">   In HTTP/1.0, Pragma was defined as an extensible field for</td><td> </td><td class="right">   In HTTP/1.0, Pragma was defined as an extensible field for</td><td class="lineno" valign="top"></td></tr>
657      <tr><td class="lineno"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno"></td></tr>
658      <tr bgcolor="gray" ><td></td><th><a name="part-l12" /><small>skipping to change at</small><em> page 31, line 7</em></th><th> </th><th><a name="part-r12" /><small>skipping to change at</small><em> page 33, line 7</em></th><td></td></tr>
659      <tr><td class="lineno" valign="top"></td><td class="left">   Caches expose additional potential vulnerabilities, since the</td><td> </td><td class="right">   Caches expose additional potential vulnerabilities, since the</td><td class="lineno" valign="top"></td></tr>
660      <tr><td class="lineno" valign="top"></td><td class="left">   contents of the cache represent an attractive target for malicious</td><td> </td><td class="right">   contents of the cache represent an attractive target for malicious</td><td class="lineno" valign="top"></td></tr>
661      <tr><td class="lineno" valign="top"></td><td class="left">   exploitation.  Because cache contents persist after an HTTP request</td><td> </td><td class="right">   exploitation.  Because cache contents persist after an HTTP request</td><td class="lineno" valign="top"></td></tr>
662      <tr><td class="lineno" valign="top"></td><td class="left">   is complete, an attack on the cache can reveal information long after</td><td> </td><td class="right">   is complete, an attack on the cache can reveal information long after</td><td class="lineno" valign="top"></td></tr>
663      <tr><td class="lineno" valign="top"></td><td class="left">   a user believes that the information has been removed from the</td><td> </td><td class="right">   a user believes that the information has been removed from the</td><td class="lineno" valign="top"></td></tr>
664      <tr><td class="lineno" valign="top"></td><td class="left">   network.  Therefore, cache contents need to be protected as sensitive</td><td> </td><td class="right">   network.  Therefore, cache contents need to be protected as sensitive</td><td class="lineno" valign="top"></td></tr>
665      <tr><td class="lineno" valign="top"></td><td class="left">   information.</td><td> </td><td class="right">   information.</td><td class="lineno" valign="top"></td></tr>
666      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
667      <tr><td class="lineno" valign="top"></td><td class="left">7.  Acknowledgments</td><td> </td><td class="right">7.  Acknowledgments</td><td class="lineno" valign="top"></td></tr>
668      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
669      <tr><td><a name="diff0035" /></td></tr>
670      <tr><td class="lineno" valign="top"></td><td class="lblock">   <span class="delete">Much</span> of <span class="delete">the content and presentation of the caching design is due to</span></td><td> </td><td class="rblock">   <span class="insert">See Section 12</span> of <span class="insert">[Part1].</span></td><td class="lineno" valign="top"></td></tr>
671      <tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete">   suggestions and comments from individuals including: Shel Kaphan,</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">   Paul Leach, Koen Holtman, David Morris, and Larry Masinter.</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="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
674      <tr><td class="lineno" valign="top"></td><td class="left">8.  References</td><td> </td><td class="right">8.  References</td><td class="lineno" valign="top"></td></tr>
675      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
676      <tr><td class="lineno" valign="top"></td><td class="left">8.1.  Normative References</td><td> </td><td class="right">8.1.  Normative References</td><td class="lineno" valign="top"></td></tr>
677      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
678      <tr><td class="lineno" valign="top"></td><td class="left">   [Part1]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td> </td><td class="right">   [Part1]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td class="lineno" valign="top"></td></tr>
679      <tr><td class="lineno" valign="top"></td><td class="left">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td> </td><td class="right">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td class="lineno" valign="top"></td></tr>
680      <tr><td class="lineno" valign="top"></td><td class="left">              and J. Reschke, Ed., "HTTP/1.1, part 1: URIs, Connections,</td><td> </td><td class="right">              and J. Reschke, Ed., "HTTP/1.1, part 1: URIs, Connections,</td><td class="lineno" valign="top"></td></tr>
681      <tr><td><a name="diff0036" /></td></tr>
682      <tr><td class="lineno" valign="top"></td><td class="lblock">              and Message Parsing", <span class="delete">draft-ietf-httpbis-p1-messaging-15</span></td><td> </td><td class="rblock">              and Message Parsing", <span class="insert">draft-ietf-httpbis-p1-messaging-16</span></td><td class="lineno" valign="top"></td></tr>
683      <tr><td class="lineno" valign="top"></td><td class="lblock">              (work in progress), <span class="delete">July</span> 2011.</td><td> </td><td class="rblock">              (work in progress), <span class="insert">August</span> 2011.</td><td class="lineno" valign="top"></td></tr>
684      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
685      <tr><td class="lineno" valign="top"></td><td class="left">   [Part2]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td> </td><td class="right">   [Part2]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td class="lineno" valign="top"></td></tr>
686      <tr><td class="lineno" valign="top"></td><td class="left">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td> </td><td class="right">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td class="lineno" valign="top"></td></tr>
687      <tr><td class="lineno" valign="top"></td><td class="left">              and J. Reschke, Ed., "HTTP/1.1, part 2: Message</td><td> </td><td class="right">              and J. Reschke, Ed., "HTTP/1.1, part 2: Message</td><td class="lineno" valign="top"></td></tr>
688      <tr><td><a name="diff0037" /></td></tr>
689      <tr><td class="lineno" valign="top"></td><td class="lblock">              Semantics", <span class="delete">draft-ietf-httpbis-p2-semantics-15</span> (work in</td><td> </td><td class="rblock">              Semantics", <span class="insert">draft-ietf-httpbis-p2-semantics-16</span> (work in</td><td class="lineno" valign="top"></td></tr>
690      <tr><td class="lineno" valign="top"></td><td class="lblock">              progress), <span class="delete">July</span> 2011.</td><td> </td><td class="rblock">              progress), <span class="insert">August</span> 2011.</td><td class="lineno" valign="top"></td></tr>
691      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
692      <tr><td class="lineno" valign="top"></td><td class="left">   [Part4]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td> </td><td class="right">   [Part4]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td class="lineno" valign="top"></td></tr>
693      <tr><td class="lineno" valign="top"></td><td class="left">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td> </td><td class="right">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td class="lineno" valign="top"></td></tr>
694      <tr><td class="lineno" valign="top"></td><td class="left">              and J. Reschke, Ed., "HTTP/1.1, part 4: Conditional</td><td> </td><td class="right">              and J. Reschke, Ed., "HTTP/1.1, part 4: Conditional</td><td class="lineno" valign="top"></td></tr>
695      <tr><td><a name="diff0038" /></td></tr>
696      <tr><td class="lineno" valign="top"></td><td class="lblock">              Requests", <span class="delete">draft-ietf-httpbis-p4-conditional-15</span> (work in</td><td> </td><td class="rblock">              Requests", <span class="insert">draft-ietf-httpbis-p4-conditional-16</span> (work in</td><td class="lineno" valign="top"></td></tr>
697      <tr><td class="lineno" valign="top"></td><td class="lblock">              progress), <span class="delete">July</span> 2011.</td><td> </td><td class="rblock">              progress), <span class="insert">August</span> 2011.</td><td class="lineno" valign="top"></td></tr>
698      <tr><td class="lineno" valign="top"></td><td class="left"></td><td> </td><td class="right"></td><td class="lineno" valign="top"></td></tr>
699      <tr><td class="lineno" valign="top"></td><td class="left">   [Part5]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td> </td><td class="right">   [Part5]    Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,</td><td class="lineno" valign="top"></td></tr>
700      <tr><td class="lineno" valign="top"></td><td class="left">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td> </td><td class="right">              Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,</td><td class="lineno" valign="top"></td></tr>
701      <tr><td class="lineno" valign="top"></td><td class="left">              and J. Reschke, Ed., "HTTP/1.1, part 5: Range Requests and</td><td> </td><td class="right">              and J. Reschke, Ed., "HTTP/1.1, part 5: Range Requests and</td><td class="lineno" valign="top"></td></tr>
702      <tr><td><a name="diff0039" /></td></tr>
703      <tr><td class="lineno" valign="top"></td><td class="lblock">              Partial Responses", <span class="delete">draft-ietf-httpbis-p5-range-15</span> (work</td><td> </td><td class="rblock">              Partial Responses", <span class="insert">draft-ietf-httpbis-p5-range-16</span> (work</td><td class="lineno" valign="top"></td></tr>
704      <tr><td class="lineno" valign="top"></td><td