Source: https://trac.ietf.org/trac/httpbis/browser/draft-ietf-httpbis/diffs/draft-ietf-httpbis-p6-cache-07-from-6.diff.html?rev=841&order=date
Timestamp: 2019-12-08 03:46:19
Document Index: 328382919

Matched Legal Cases: ['art1', 'art1', 'art1', 'art1', 'art1', 'art1', 'art1', 'art1', 'art1', 'art1', 'art1', 'art1', 'art 1', 'art2', 'art2', 'art4', 'art4', 'art4', 'art4', 'art2', 'art2', 'art3', 'art1', 'art1', 'art5', 'art4', 'art1', 'art1']

draft-ietf-httpbis-p6-cache-07-from-6.diff.html in draft-ietf-httpbis/diffs – Hypertext Transfer Protocol Wiki
source: draft-ietf-httpbis/diffs/draft-ietf-httpbis-p6-cache-07-from-6.diff.html @ 841
Last change on this file since 841 was 608, checked in by julian.reschke@…, 10 years ago
Regenerate ready-to-submit drafts; update diffs.
<!-- Generated by rfcdiff 1.35: rfcdiff -->
<title>Diff: draft-ietf-httpbis-p6-cache-06.txt - draft-ietf-httpbis-p6-cache-07.txt</title>
<tr bgcolor="orange"><th></th><th>&nbsp;draft-ietf-httpbis-p6-cache-06.txt&nbsp;</th><th> </th><th>&nbsp;draft-ietf-httpbis-p6-cache-07.txt&nbsp;</th><th></th></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock">Expires: <span class="delete">September 10, 2009</span> J. Mogul</td><td> </td><td class="rblock">Expires: <span class="insert">January 14, 2010 </span> J. Mogul</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> <span class="insert">M. Nottingham, Ed.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">March 9</span>, 2009</td><td> </td><td class="rblock"> <span class="insert">July 13</span>, 2009</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> draft-ietf-httpbis-p6-cache-0<span class="delete">6</span></td><td> </td><td class="rblock"> draft-ietf-httpbis-p6-cache-0<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> provisions of BCP 78 and BCP 79. This document may contain material</td><td> </td><td class="right"> provisions of BCP 78 and BCP 79. This document may contain material</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> from IETF Documents or IETF Contributions published or made publicly</td><td> </td><td class="right"> from IETF Documents or IETF Contributions published or made publicly</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> available before November 10, 2008. The person(s) controlling the</td><td> </td><td class="right"> available before November 10, 2008. The person(s) controlling the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> copyright in some of this material may not have granted the IETF</td><td> </td><td class="right"> copyright in some of this material may not have granted the IETF</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Trust the right to allow modifications of such material outside the</td><td> </td><td class="right"> Trust the right to allow modifications of such material outside the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> IETF Standards Process. Without obtaining an adequate license from</td><td> </td><td class="right"> IETF Standards Process. Without obtaining an adequate license from</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l2" /><small>skipping to change at</small><em> page 2, line 4</em></th><th> </th><th><a name="part-r2" /><small>skipping to change at</small><em> page 2, line 6</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> This Internet-Draft will expire on <span class="delete">September 10, 2009</span>.</td><td> </td><td class="rblock"> This Internet-Draft will expire on <span class="insert">January 14, 2010</span>.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Copyright (c) 2009 IETF Trust and the persons identified as the</td><td> </td><td class="right"> Copyright (c) 2009 IETF Trust and the persons identified as the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Provisions Relating to IETF Documents in effect on the date of</td><td> </td><td class="right"> Provisions Relating to IETF Documents in effect on the date of</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> publication of this document (http://trustee.ietf.org/license-info).</td><td> </td><td class="right"> publication of this document (http://trustee.ietf.org/license-info).</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Please review these documents carefully, as they describe your rights</td><td> </td><td class="right"> Please review these documents carefully, as they describe your rights</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l3" /><small>skipping to change at</small><em> page 2, line 41</em></th><th> </th><th><a name="part-r3" /><small>skipping to change at</small><em> page 2, line 44</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> or indicate cacheable response messages.</td><td> </td><td class="right"> or indicate cacheable response messages.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> at &lt;http://tools.ietf.org/wg/httpbis/trac/report/11&gt; and related</td><td> </td><td class="right"> at &lt;http://tools.ietf.org/wg/httpbis/trac/report/11&gt; and related</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> The changes in this draft are summarized in Appendix C.<span class="delete">7</span>.</td><td> </td><td class="rblock"> The changes in this draft are summarized in Appendix C.<span class="insert">8</span>.</td><td class="lineno" valign="top"></td></tr>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> 1.3. Requirements . . . . . . . . . . . . . . . . . . . . . . . 6</td><td> </td><td class="right"> 1.3. Requirements . . . . . . . . . . . . . . . . . . . . . . . 6</td><td class="lineno" valign="top"></td></tr>
<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>
<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>
<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>
<tr bgcolor="gray" ><td></td><th><a name="part-l4" /><small>skipping to change at</small><em> page 3, line 27</em></th><th> </th><th><a name="part-r4" /><small>skipping to change at</small><em> page 3, line 27</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.1.1. Storing Partial and Incomplete Responses . . . . . . . 8</td><td> </td><td class="right"> 2.1.1. Storing Partial and Incomplete Responses . . . . . . . 8</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.2. Constructing Responses from Caches . . . . . . . . . . . . 8</td><td> </td><td class="right"> 2.2. Constructing Responses from Caches . . . . . . . . . . . . 8</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.3. Freshness Model . . . . . . . . . . . . . . . . . . . . . 9</td><td> </td><td class="right"> 2.3. Freshness Model . . . . . . . . . . . . . . . . . . . . . 9</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.3.1. Calculating Freshness Lifetime . . . . . . . . . . . . 10</td><td> </td><td class="right"> 2.3.1. Calculating Freshness Lifetime . . . . . . . . . . . . 10</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.3.2. Calculating Age . . . . . . . . . . . . . . . . . . . 11</td><td> </td><td class="right"> 2.3.2. Calculating Age . . . . . . . . . . . . . . . . . . . 11</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.3.3. Serving Stale Responses . . . . . . . . . . . . . . . 13</td><td> </td><td class="right"> 2.3.3. Serving Stale Responses . . . . . . . . . . . . . . . 13</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.4. Validation Model . . . . . . . . . . . . . . . . . . . . . 13</td><td> </td><td class="right"> 2.4. Validation Model . . . . . . . . . . . . . . . . . . . . . 13</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.5. Request Methods that Invalidate . . . . . . . . . . . . . 14</td><td> </td><td class="right"> 2.5. Request Methods that Invalidate . . . . . . . . . . . . . 14</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.6. Caching Negotiated Responses . . . . . . . . . . . . . . . 15</td><td> </td><td class="right"> 2.6. Caching Negotiated Responses . . . . . . . . . . . . . . . 15</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 2.7. Combining Responses . . . . . . . . . . . . . . . . . . . 16</td><td> </td><td class="right"> 2.7. Combining Responses . . . . . . . . . . . . . . . . . . . 16</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> 3. Header Field Definitions . . . . . . . . . . . . . . . . . . . 1<span class="delete">6</span></td><td> </td><td class="rblock"> 3. Header Field Definitions . . . . . . . . . . . . . . . . . . . 1<span class="insert">7</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.1. Age . . . . . . . . . . . . . . . . . . . . . . . . . . . 17</td><td> </td><td class="right"> 3.1. Age . . . . . . . . . . . . . . . . . . . . . . . . . . . 17</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.2. Cache-Control . . . . . . . . . . . . . . . . . . . . . . 17</td><td> </td><td class="right"> 3.2. Cache-Control . . . . . . . . . . . . . . . . . . . . . . 17</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.2.1. Request Cache-Control Directives . . . . . . . . . . . 18</td><td> </td><td class="right"> 3.2.1. Request Cache-Control Directives . . . . . . . . . . . 18</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.2.2. Response Cache-Control Directives . . . . . . . . . . 20</td><td> </td><td class="right"> 3.2.2. Response Cache-Control Directives . . . . . . . . . . 20</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.2.3. Cache Control Extensions . . . . . . . . . . . . . . . 22</td><td> </td><td class="right"> 3.2.3. Cache Control Extensions . . . . . . . . . . . . . . . 22</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.3. Expires . . . . . . . . . . . . . . . . . . . . . . . . . 23</td><td> </td><td class="right"> 3.3. Expires . . . . . . . . . . . . . . . . . . . . . . . . . 23</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.4. Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . 23</td><td> </td><td class="right"> 3.4. Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . 23</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.5. Vary . . . . . . . . . . . . . . . . . . . . . . . . . . . 24</td><td> </td><td class="right"> 3.5. Vary . . . . . . . . . . . . . . . . . . . . . . . . . . . 24</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 3.6. Warning . . . . . . . . . . . . . . . . . . . . . . . . . 25</td><td> </td><td class="right"> 3.6. Warning . . . . . . . . . . . . . . . . . . . . . . . . . 25</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> 4. History Lists . . . . . . . . . . . . . . . . . . . . . . . . 28</td><td> </td><td class="right"> 4. History Lists . . . . . . . . . . . . . . . . . . . . . . . . 28</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l5" /><small>skipping to change at</small><em> page 4, line 9</em></th><th> </th><th><a name="part-r5" /><small>skipping to change at</small><em> page 4, line 9</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Appendix B. Collected ABNF . . . . . . . . . . . . . . . . . . . 31</td><td> </td><td class="right"> Appendix B. Collected ABNF . . . . . . . . . . . . . . . . . . . 31</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> publication) . . . . . . . . . . . . . . . . . . . . 33</td><td> </td><td class="right"> publication) . . . . . . . . . . . . . . . . . . . . 33</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> C.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 33</td><td> </td><td class="right"> C.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 33</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> C.2. Since draft-ietf-httpbis-p6-cache-00 . . . . . . . . . . . 33</td><td> </td><td class="right"> C.2. Since draft-ietf-httpbis-p6-cache-00 . . . . . . . . . . . 33</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> C.3. Since draft-ietf-httpbis-p6-cache-01 . . . . . . . . . . . 34</td><td> </td><td class="right"> C.3. Since draft-ietf-httpbis-p6-cache-01 . . . . . . . . . . . 34</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> C.4. Since draft-ietf-httpbis-p6-cache-02 . . . . . . . . . . . 34</td><td> </td><td class="right"> C.4. Since draft-ietf-httpbis-p6-cache-02 . . . . . . . . . . . 34</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> C.5. Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . 34</td><td> </td><td class="right"> C.5. Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . 34</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> C.6. Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . 35</td><td> </td><td class="right"> C.6. Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . 35</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> C.7. Since draft-ietf-httpbis-p6-cache-05 . . . . . . . . . . . 35</td><td> </td><td class="right"> C.7. Since draft-ietf-httpbis-p6-cache-05 . . . . . . . . . . . 35</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="delete">35</span></td><td> </td><td class="rblock"> <span class="insert">C.8. Since draft-ietf-httpbis-p6-cache-06 . . . . . . . . . . . 35</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . <span class="insert">36</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 38</td><td> </td><td class="right"> Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 38</td><td class="lineno" valign="top"></td></tr>
<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>
<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>
<tr bgcolor="gray" ><td></td><th><a name="part-l6" /><small>skipping to change at</small><em> page 7, line 39</em></th><th> </th><th><a name="part-r6" /><small>skipping to change at</small><em> page 7, line 39</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> quoted-string = &lt;quoted-string, defined in [Part1], Section 1.2.2&gt;</td><td> </td><td class="right"> quoted-string = &lt;quoted-string, defined in [Part1], Section 1.2.2&gt;</td><td class="lineno" valign="top"></td></tr>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> field-name = &lt;field-name, defined in [Part1], Section 4.2&gt;</td><td> </td><td class="right"> field-name = &lt;field-name, defined in [Part1], Section 4.2&gt;</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> HTTP-date = &lt;HTTP-date, defined in [Part1], Section 3.2<span class="delete">.1</span>&gt;</td><td> </td><td class="rblock"> HTTP-date = &lt;HTTP-date, defined in [Part1], Section 3.2&gt;</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> port = &lt;port, defined in [Part1], Section 2.1&gt;</td><td> </td><td class="right"> port = &lt;port, defined in [Part1], Section 2.1&gt;</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> pseudonym = &lt;pseudonym, defined in [Part1], Section 8.9&gt;</td><td> </td><td class="right"> pseudonym = &lt;pseudonym, defined in [Part1], Section 8.9&gt;</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> uri-host = &lt;uri-host, defined in [Part1], Section 2.1&gt;</td><td> </td><td class="right"> uri-host = &lt;uri-host, defined in [Part1], Section 2.1&gt;</td><td class="lineno" valign="top"></td></tr>
<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>
<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>
<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>
<tr bgcolor="gray" ><td></td><th><a name="part-l7" /><small>skipping to change at</small><em> page 8, line 45</em></th><th> </th><th><a name="part-r7" /><small>skipping to change at</small><em> page 8, line 45</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> A cache that does not support the Range and Content-Range headers</td><td> </td><td class="right"> A cache that does not support the Range and Content-Range headers</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> MUST NOT store incomplete or partial responses.</td><td> </td><td class="right"> MUST NOT store incomplete or partial responses.</td><td class="lineno" valign="top"></td></tr>
<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>
<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>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> o The presented Request-URI and that of the stored response match</td><td> </td><td class="right"> o The presented Request-URI and that of the stored response match</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">(see [[anchor1: TBD]]),</span> and</td><td> </td><td class="rblock"> <span class="insert">([[TODO-Request-URI: Need to find a new term for this, as Part 1</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> doesn't define Request-URI anymore; the new term request-target</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> does not work for this.]]),</span> and</td><td class="lineno" valign="top"></td></tr>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> to be used for the presented request, and</td><td> </td><td class="right"> to be used for the presented request, and</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o selecting request-headers nominated by the stored response (if</td><td> </td><td class="right"> o selecting request-headers nominated by the stored response (if</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> any) match those presented (see Section 2.6), and</td><td> </td><td class="right"> any) match those presented (see Section 2.6), and</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o the presented request and stored response are free from directives</td><td> </td><td class="right"> o the presented request and stored response are free from directives</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> that would prevent its use (see Section 3.2 and Section 3.4), and</td><td> </td><td class="right"> that would prevent its use (see Section 3.2 and Section 3.4), and</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o the stored response is either:</td><td> </td><td class="right"> o the stored response is either:</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> * fresh (see Section 2.3), or</td><td> </td><td class="right"> * fresh (see Section 2.3), or</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> * allowed to be served stale (see Section 2.3.3), or</td><td> </td><td class="right"> * allowed to be served stale (see Section 2.3.3), or</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> * successfully validated (see Section 2.4).</td><td> </td><td class="right"> * successfully validated (see Section 2.4).</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l8" /><small>skipping to change at</small><em> page 9, line 15</em></th><th> </th><th><a name="part-r8" /><small>skipping to change at</small><em> page 9, line 18</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">[[anchor2: TODO:</span> define method cacheability for GET, HEAD and POST in</td><td> </td><td class="rblock"> <span class="insert">[[TODO-method-cacheability:</span> define method cacheability for GET, HEAD</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> p2-semantics.]]</td><td> </td><td class="rblock"> and POST in p2-semantics.]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> When a stored response is used to satisfy a request, caches MUST</td><td> </td><td class="right"> When a stored response is used to satisfy a request, caches MUST</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> include a single Age header field <span class="delete">Section 3.1</span> in the response with a</td><td> </td><td class="rblock"> include a single Age header field <span class="insert">(Section 3.1)</span> in the response with</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> value equal to the stored response's current_age; see Section 2.3.2.</td><td> </td><td class="rblock"> a value equal to the stored response's current_age; see</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">[[anchor3:</span> DISCUSS: this currently includes successfully validated</td><td> </td><td class="rblock"> Section 2.3.2. <span class="insert">[[anchor1:</span> DISCUSS: this currently includes</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> responses.]]</td><td> </td><td class="rblock"> successfully validated responses.]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Requests with methods that are unsafe (Section 7.1.1 of [Part2]) MUST</td><td> </td><td class="right"> Requests with methods that are unsafe (Section 7.1.1 of [Part2]) MUST</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> be written through the cache to the origin server; i.e., A cache must</td><td> </td><td class="right"> be written through the cache to the origin server; i.e., A cache must</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> not reply to such a request before having forwarded the request and</td><td> </td><td class="right"> not reply to such a request before having forwarded the request and</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> having received a corresponding response.</td><td> </td><td class="right"> having received a corresponding response.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Also, note that unsafe requests might invalidate already stored</td><td> </td><td class="right"> Also, note that unsafe requests might invalidate already stored</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> responses; see Section 2.5.</td><td> </td><td class="right"> responses; see Section 2.5.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Caches MUST use the most recent response (as determined by the Date</td><td> </td><td class="right"> Caches MUST use the most recent response (as determined by the Date</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> header) when more than one suitable response is stored. They can</td><td> </td><td class="right"> header) when more than one suitable response is stored. They can</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> also forward a request with "Cache-Control: max-age=0" or "Cache-</td><td> </td><td class="right"> also forward a request with "Cache-Control: max-age=0" or "Cache-</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Control: no-cache" to disambiguate which response to use.</td><td> </td><td class="right"> Control: no-cache" to disambiguate which response to use.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">[[anchor4: TODO:</span> end-to-end and hop-by-hop headers, <span class="delete">non-modifiable</span></td><td> </td><td class="rblock"> <span class="insert">[[TODO-header-properties:</span> end-to-end and hop-by-hop headers, <span class="insert">non-</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> headers removed; re-spec in p1]]</td><td> </td><td class="rblock"><span class="insert"> modifiable</span> headers removed; re-spec in p1]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">2.3. Freshness Model</td><td> </td><td class="right">2.3. Freshness Model</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> When a response is "fresh" in the cache, it can be used to satisfy</td><td> </td><td class="right"> When a response is "fresh" in the cache, it can be used to satisfy</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> subsequent requests without contacting the origin server, thereby</td><td> </td><td class="right"> subsequent requests without contacting the origin server, thereby</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> improving efficiency.</td><td> </td><td class="right"> improving efficiency.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The primary mechanism for determining freshness is for an origin</td><td> </td><td class="right"> The primary mechanism for determining freshness is for an origin</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> server to provide an explicit expiration time in the future, using</td><td> </td><td class="right"> server to provide an explicit expiration time in the future, using</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> either the Expires header (Section 3.3) or the max-age response cache</td><td> </td><td class="right"> either the Expires header (Section 3.3) or the max-age response cache</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> directive (Section 3.2.2). Generally, origin servers will assign</td><td> </td><td class="right"> directive (Section 3.2.2). Generally, origin servers will assign</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> future explicit expiration times to responses in the belief that the</td><td> </td><td class="right"> future explicit expiration times to responses in the belief that the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> entity is not likely to change in a semantically significant way</td><td> </td><td class="right"> entity is not likely to change in a semantically significant way</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> before the expiration time is reached.</td><td> </td><td class="right"> before the expiration time is reached.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> If an origin server wishes to force a cache to validate every</td><td> </td><td class="right"> If an origin server wishes to force a cache to validate every</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> request, it can assign an explicit expiration time in the past. This</td><td> </td><td class="right"> request, it can assign an explicit expiration time in the past. This</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> means that the response is always stale, so that caches should</td><td> </td><td class="right"> means that the response is always stale, so that caches should</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> validate it before using it for subsequent requests. [[anchor<span class="delete">5</span>: This</td><td> </td><td class="rblock"> validate it before using it for subsequent requests. [[anchor<span class="insert">2</span>: This</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> wording may cause confusion, because the response may still be served</td><td> </td><td class="right"> wording may cause confusion, because the response may still be served</td><td class="lineno" valign="top"></td></tr>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> Since origin servers do not always provide explicit expiration times,</td><td> </td><td class="right"> Since origin servers do not always provide explicit expiration times,</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> HTTP caches may also assign heuristic expiration times when they are</td><td> </td><td class="right"> HTTP caches may also assign heuristic expiration times when they are</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> not specified, employing algorithms that use other header values</td><td> </td><td class="right"> not specified, employing algorithms that use other header values</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> (such as the Last-Modified time) to estimate a plausible expiration</td><td> </td><td class="right"> (such as the Last-Modified time) to estimate a plausible expiration</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> time. The HTTP/1.1 specification does not provide specific</td><td> </td><td class="right"> time. The HTTP/1.1 specification does not provide specific</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> algorithms, but does impose worst-case constraints on their results.</td><td> </td><td class="right"> algorithms, but does impose worst-case constraints on their results.</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l9" /><small>skipping to change at</small><em> page 10, line 32</em></th><th> </th><th><a name="part-r9" /><small>skipping to change at</small><em> page 10, line 35</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> response_is_fresh = (freshness_lifetime &gt; current_age)</td><td> </td><td class="right"> response_is_fresh = (freshness_lifetime &gt; current_age)</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The freshness_lifetime is defined in Section 2.3.1; the current_age</td><td> </td><td class="right"> The freshness_lifetime is defined in Section 2.3.1; the current_age</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> is defined in Section 2.3.2.</td><td> </td><td class="right"> is defined in Section 2.3.2.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Additionally, clients may need to influence freshness calculation.</td><td> </td><td class="right"> Additionally, clients may need to influence freshness calculation.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> They can do this using several request cache directives, with the</td><td> </td><td class="right"> They can do this using several request cache directives, with the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> effect of either increasing or loosening constraints on freshness.</td><td> </td><td class="right"> effect of either increasing or loosening constraints on freshness.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> See Section 3.2.1.</td><td> </td><td class="right"> See Section 3.2.1.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> [[anchor<span class="delete">6</span>: ISSUE: there are not requirements directly applying to</td><td> </td><td class="rblock"> [[anchor<span class="insert">3</span>: ISSUE: there are not requirements directly applying to</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> cache-request-directives and freshness.]]</td><td> </td><td class="right"> cache-request-directives and freshness.]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Note that freshness applies only to cache operation; it cannot be</td><td> </td><td class="right"> Note that freshness applies only to cache operation; it cannot be</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> used to force a user agent to refresh its display or reload a</td><td> </td><td class="right"> used to force a user agent to refresh its display or reload a</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> resource. See Section 4 for an explanation of the difference between</td><td> </td><td class="right"> resource. See Section 4 for an explanation of the difference between</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> caches and history mechanisms.</td><td> </td><td class="right"> caches and history mechanisms.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">2.3.1. Calculating Freshness Lifetime</td><td> </td><td class="right">2.3.1. Calculating Freshness Lifetime</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> A cache can calculate the freshness lifetime (denoted as</td><td> </td><td class="right"> A cache can calculate the freshness lifetime (denoted as</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l10" /><small>skipping to change at</small><em> page 11, line 30</em></th><th> </th><th><a name="part-r10" /><small>skipping to change at</small><em> page 11, line 33</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> When a heuristic is used to calculate freshness lifetime, the cache</td><td> </td><td class="right"> When a heuristic is used to calculate freshness lifetime, the cache</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> SHOULD attach a Warning header with a 113 warn-code to the response</td><td> </td><td class="right"> SHOULD attach a Warning header with a 113 warn-code to the response</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> if its current_age is more than 24 hours and such a warning is not</td><td> </td><td class="right"> if its current_age is more than 24 hours and such a warning is not</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> already present.</td><td> </td><td class="right"> already present.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Also, if the response has a Last-Modified header (Section 6.6 of</td><td> </td><td class="right"> Also, if the response has a Last-Modified header (Section 6.6 of</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> [Part4]), the heuristic expiration value SHOULD be no more than some</td><td> </td><td class="right"> [Part4]), the heuristic expiration value SHOULD be no more than some</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> fraction of the interval since that time. A typical setting of this</td><td> </td><td class="right"> fraction of the interval since that time. A typical setting of this</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> fraction might be 10%.</td><td> </td><td class="right"> fraction might be 10%.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> [[anchor<span class="delete">7</span>: REVIEW: took away HTTP/1.0 query string heuristic</td><td> </td><td class="rblock"> [[anchor<span class="insert">4</span>: REVIEW: took away HTTP/1.0 query string heuristic</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> uncacheability.]]</td><td> </td><td class="right"> uncacheability.]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">2.3.2. Calculating Age</td><td> </td><td class="right">2.3.2. Calculating Age</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> HTTP/1.1 uses the Age response-header to convey the estimated age of</td><td> </td><td class="right"> HTTP/1.1 uses the Age response-header to convey the estimated age of</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> the response message when obtained from a cache. The Age field value</td><td> </td><td class="right"> the response message when obtained from a cache. The Age field value</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> is the cache's estimate of the amount of time since the response was</td><td> </td><td class="right"> is the cache's estimate of the amount of time since the response was</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> generated or validated by the origin server. In essence, the Age</td><td> </td><td class="right"> generated or validated by the origin server. In essence, the Age</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> value is the sum of the time that the response has been resident in</td><td> </td><td class="right"> value is the sum of the time that the response has been resident in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> each of the caches along the path from the origin server, plus the</td><td> </td><td class="right"> each of the caches along the path from the origin server, plus the</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l11" /><small>skipping to change at</small><em> page 13, line 36</em></th><th> </th><th><a name="part-r11" /><small>skipping to change at</small><em> page 13, line 50</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> If a cache receives a first-hand response (either an entire response,</td><td> </td><td class="right"> If a cache receives a first-hand response (either an entire response,</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> or a 304 (Not Modified) response) that it would normally forward to</td><td> </td><td class="right"> or a 304 (Not Modified) response) that it would normally forward to</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> the requesting client, and the received response is no longer fresh,</td><td> </td><td class="right"> the requesting client, and the received response is no longer fresh,</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> the cache SHOULD forward it to the requesting client without adding a</td><td> </td><td class="right"> the cache SHOULD forward it to the requesting client without adding a</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> new Warning (but without removing any existing Warning headers). A</td><td> </td><td class="right"> new Warning (but without removing any existing Warning headers). A</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> cache SHOULD NOT attempt to validate a response simply because that</td><td> </td><td class="right"> cache SHOULD NOT attempt to validate a response simply because that</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> response became stale in transit.</td><td> </td><td class="right"> response became stale in transit.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">2.4. Validation Model</td><td> </td><td class="right">2.4. Validation Model</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">Checking with</span> the origin server to <span class="delete">see if</span> a <span class="delete">stale or otherwise</span></td><td> </td><td class="rblock"> <span class="insert">When a cache has one or more stored responses for a requested URI,</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> unusable cached</span> response <span class="delete">can</span> be <span class="delete">reused</span> is <span class="delete">called</span> "validating" or</td><td> </td><td class="rblock"><span class="insert"> but cannot serve any of them (e.g., because they are not fresh, or</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">"revalidating." Doing so potentially avoids the overhead of</span></td><td> </td><td class="rblock"><span class="insert"> one cannot be selected; see Section 2.6), it can use the conditional</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> retransmitting the response body when</span> the stored <span class="delete">response is valid.</span></td><td> </td><td class="rblock"><span class="insert"> request mechanism [Part4] in the forwarded request to give</span> the origin</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> server <span class="insert">an opportunity</span> to <span class="insert">both select</span> a <span class="insert">valid stored</span> response <span class="insert">to</span> be</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> <span class="insert">used, and to update it. This process</span> is <span class="insert">known as</span> "validating" or</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> <span class="insert">"revalidating"</span> the stored <span class="insert">response.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">HTTP's conditional request mechanism [Part4] is used for this</span></td><td> </td><td class="rblock"> When <span class="insert">sending</span> such <span class="insert">a conditional request,</span> the <span class="insert">cache SHOULD add</span> an <span class="insert">If-</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> purpose.</span> When <span class="delete">a stored response includes one or more validators,</span></td><td> </td><td class="rblock"><span class="insert"> Modified-Since header whose value is that of the</span> Last-Modified header</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> such <span class="delete">as</span> the <span class="delete">field values of</span> an <span class="delete">ETag or</span> Last-Modified header <span class="delete">field,</span></td><td> </td><td class="rblock"> <span class="insert">from the selected (see Section 2.6) stored response, if available.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> then a validating request</span> SHOULD be <span class="delete">made conditional to those</span> field</td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">values.</span></td><td> </td><td class="rblock"><span class="insert"> Additionally, the cache SHOULD add an If-None-Match header whose</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> value is that of the ETag header(s) from all responses stored for the</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> requested URI, if present. However, if any of the stored responses</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> contains only partial content, its entity-tag</span> SHOULD <span class="insert">NOT</span> be <span class="insert">included</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> in the If-None-Match header</span> field <span class="insert">unless the request is for a range</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> that would be fully satisfied by that stored response.</span></td><td class="lineno" valign="top"></td></tr>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> response can be updated and reused; see Section 2.7.</td><td> </td><td class="right"> response can be updated and reused; see Section 2.7.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">If instead the cache receives a</span> full response (i.e., one with a</td><td> </td><td class="rblock"> <span class="insert">A</span> full response (i.e., one with a response <span class="insert">body) indicates that none</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> response <span class="delete">body), it</span> is used to satisfy the request and replace the</td><td> </td><td class="rblock"><span class="insert"> of the stored responses nominated in the conditional request is</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> stored response. <span class="delete">[[anchor8:</span> Should there be a requirement here?]]</td><td> </td><td class="rblock"><span class="insert"> suitable. Instead, the full response</span> is used <span class="insert">both</span> to satisfy the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> request and replace the stored response. <span class="insert">[[anchor5:</span> Should there be a</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> requirement here?]]</td><td class="lineno" valign="top"></td></tr>
<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>
<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>
<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>
<tr><td class="lineno" valign="top"></td><td class="lblock"> case, it MAY return a previously stored response <span class="delete">(which SHOULD</span></td><td> </td><td class="rblock"> case, it MAY return a previously stored response <span class="insert">(see</span> Section <span class="insert">2.3.3).</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> include the 111 warn-code; see</span> Section <span class="delete">3.6) unless</span> the stored</td><td> </td><td class="rblock"><span class="insert"></span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> response <span class="delete">includes</span> the <span class="delete">"must-revalidate" cache directive (see</span></td><td> </td><td class="rblock"><span class="insert"> If a cache receives a successful response whose Content-Location</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> Section 2.3.3).</span></td><td> </td><td class="rblock"><span class="insert"> field matches that of an existing stored response for the same</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> Request-URI, whose entity-tag differs from that of</span> the <span class="insert">existing</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> stored <span class="insert">response, and whose Date is more recent than that of the</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> existing response, the existing</span> response <span class="insert">SHOULD NOT be returned in</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> response to future requests and SHOULD be deleted from</span> the <span class="insert">cache.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> [[anchor6: DISCUSS: Not sure if this is necessary.]]</span></td><td class="lineno" valign="top"></td></tr>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> Because unsafe methods (Section 7.1.1 of [Part2]) have the potential</td><td> </td><td class="right"> Because unsafe methods (Section 7.1.1 of [Part2]) have the potential</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> for changing state on the origin server, intervening caches can use</td><td> </td><td class="right"> for changing state on the origin server, intervening caches can use</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> them to keep their contents up-to-date.</td><td> </td><td class="right"> them to keep their contents up-to-date.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The following HTTP methods MUST cause a cache to invalidate the</td><td> </td><td class="right"> The following HTTP methods MUST cause a cache to invalidate the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Request-URI as well as the Location and <span class="delete">Content-Location</span> headers (if</td><td> </td><td class="rblock"> Request-URI as well as the <span class="insert">URI(s) in the</span> Location and <span class="insert">Content-</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> present):</td><td> </td><td class="rblock"><span class="insert"> Location</span> headers (if present):</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o PUT</td><td> </td><td class="right"> o PUT</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o DELETE</td><td> </td><td class="right"> o DELETE</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o POST</td><td> </td><td class="right"> o POST</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> An invalidation based on <span class="delete">the URI in</span> a Location or Content-Location</td><td> </td><td class="rblock"> An invalidation based on <span class="insert">a URI from</span> a Location or Content-Location</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> header MUST NOT be performed if the host part of that URI differs</td><td> </td><td class="right"> header MUST NOT be performed if the host part of that URI differs</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> from the host part in the Request-URI. This helps prevent denial of</td><td> </td><td class="right"> from the host part in the Request-URI. This helps prevent denial of</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> service attacks.</td><td> </td><td class="right"> service attacks.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> [[anchor<span class="delete">9</span>: TODO: "host part" needs to be specified better.]]</td><td> </td><td class="rblock"> [[anchor<span class="insert">7</span>: TODO: "host part" needs to be specified better.]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> A cache that passes through requests for methods it does not</td><td> </td><td class="right"> A cache that passes through requests for methods it does not</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> understand SHOULD invalidate the Request-URI.</td><td> </td><td class="right"> understand SHOULD invalidate the Request-URI.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Here, "invalidate" means that the cache will either remove all stored</td><td> </td><td class="right"> Here, "invalidate" means that the cache will either remove all stored</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> responses related to the Request-URI, or will mark these as "invalid"</td><td> </td><td class="right"> responses related to the Request-URI, or will mark these as "invalid"</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> and in need of a mandatory validation before they can be returned in</td><td> </td><td class="right"> and in need of a mandatory validation before they can be returned in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> response to a subsequent request.</td><td> </td><td class="right"> response to a subsequent request.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Note that this does not guarantee that all appropriate responses are</td><td> </td><td class="right"> Note that this does not guarantee that all appropriate responses are</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> invalidated. For example, the request that caused the change at the</td><td> </td><td class="right"> invalidated. For example, the request that caused the change at the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> origin server might not have gone through the cache where a response</td><td> </td><td class="right"> origin server might not have gone through the cache where a response</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> is stored.</td><td> </td><td class="right"> is stored.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> [[anchor<span class="delete">10</span>: TODO: specify that only successful (2xx, 3xx?) responses</td><td> </td><td class="rblock"> [[anchor<span class="insert">8</span>: TODO: specify that only successful (2xx, 3xx?) responses</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> invalidate.]]</td><td> </td><td class="right"> invalidate.]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">2.6. Caching Negotiated Responses</td><td> </td><td class="right">2.6. Caching Negotiated Responses</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">Use of server-driven content negotiation (Section 4.1 of [Part3])</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> alters the conditions under which a cache can use the response for</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> subsequent requests.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> When a cache receives a request that can be satisfied by a stored</td><td> </td><td class="right"> When a cache receives a request that can be satisfied by a stored</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> response that <span class="delete">includes</span> a Vary header field (Section 3.5), it MUST NOT</td><td> </td><td class="rblock"> response that <span class="insert">has</span> a Vary header field (Section 3.5), it MUST NOT use</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> use that response unless all of the selecting request-headers in the</td><td> </td><td class="rblock"> that response unless all of the selecting request-headers <span class="insert">nominated</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">presented</span> request <span class="delete">match</span> the <span class="delete">corresponding</span> stored <span class="delete">request-headers from</span></td><td> </td><td class="rblock"><span class="insert"> by the Vary header match</span> in <span class="insert">both</span> the <span class="insert">original</span> request <span class="insert">(i.e., that</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> the <span class="delete">original</span> request.</td><td> </td><td class="rblock"><span class="insert"> associated with</span> the stored <span class="insert">response), and</span> the <span class="insert">presented</span> request.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The selecting request-headers from two requests are defined to match</td><td> </td><td class="right"> The selecting request-headers from two requests are defined to match</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> if and only if the selecting request-headers in the first request can</td><td> </td><td class="right"> if and only if the selecting request-headers in the first request can</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> be transformed to the selecting request-headers in the second request</td><td> </td><td class="right"> be transformed to the selecting request-headers in the second request</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> by adding or removing linear white space <span class="delete">[[anchor11:</span> [ref]]] at</td><td> </td><td class="rblock"> by adding or removing linear white space <span class="insert">[[anchor9:</span> [ref]]] at places</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> places where this is allowed by the corresponding ABNF, and/or</td><td> </td><td class="rblock"> where this is allowed by the corresponding ABNF, and/or combining</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> combining multiple message-header fields with the same field name</td><td> </td><td class="rblock"> multiple message-header fields with the same field name following the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> following the rules about message headers in Section 4.2 of [Part1].</td><td> </td><td class="rblock"> rules about message headers in Section 4.2 of [Part1].</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">[[anchor12: DISCUSS: header-specific canonicalisation]]</span></td><td> </td><td class="rblock"> </td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> <span class="insert">If a header field is absent from a request, it can only match another</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> request if it is also absent there.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> A Vary header field-value of "*" always fails to match, and</td><td> </td><td class="right"> A Vary header field-value of "*" always fails to match, and</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> subsequent requests to that resource can only be properly interpreted</td><td> </td><td class="right"> subsequent requests to that resource can only be properly interpreted</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> by the origin server.</td><td> </td><td class="right"> by the origin server.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">If no</span> stored response <span class="delete">matches, the cache MAY forward the presented</span></td><td> </td><td class="rblock"> <span class="insert">The</span> stored response with <span class="insert">matching selecting request-headers</span> is <span class="insert">known</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> request to the origin server in a conditional request, and SHOULD</span></td><td> </td><td class="rblock"><span class="insert"> as the selected</span> response.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> include all ETags stored</span> with <span class="delete">potentially suitable responses in an</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> If-None-Match request header. If the server responds with 304 (Not</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> Modified) and includes an entity tag or Content-Location that</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> indicates the entity to be used, that cached response MUST be used to</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> satisfy the presented request, and SHOULD be used to update the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> corresponding stored response; see Section 2.7.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> If any of the stored responses contains only partial content, its</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> entity-tag SHOULD NOT be included in the If-None-Match header field</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> unless the request</span> is <span class="delete">for a range that would be fully satisfied by</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> that stored</span> response.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> If <span class="delete">a cache receives a successful response whose Content-Location</span></td><td> </td><td class="rblock"> If <span class="insert">no selected</span> response is <span class="insert">available,</span> the <span class="insert">cache MAY forward</span> the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> field matches that of an existing stored</span> response <span class="delete">for the same</span></td><td> </td><td class="rblock"> <span class="insert">presented request</span> to the <span class="insert">origin server in a conditional request; see</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> Request-URI, whose entity-tag differs from that of the existing</span></td><td> </td><td class="rblock"><span class="insert"> Section 2.4.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> stored response, and whose Date</span> is <span class="delete">more recent than that of</span> the</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">existing response,</span> the <span class="delete">existing response SHOULD NOT be returned in</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> response</span> to <span class="delete">future requests and SHOULD be deleted from</span> the</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">cache.[[anchor13: DISCUSS: Not sure if this is necessary.]]</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left">2.7. Combining Responses</td><td> </td><td class="right">2.7. Combining Responses</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> When a cache receives a 304 (Not Modified) response or a 206 (Partial</td><td> </td><td class="right"> When a cache receives a 304 (Not Modified) response or a 206 (Partial</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Content) <span class="delete">response,</span> it needs to <span class="delete">update</span> the stored response with the</td><td> </td><td class="rblock"> Content) <span class="insert">response (in this section, the "new" response"),</span> it needs to</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> new one, so that the updated response can be <span class="delete">sent</span> to the <span class="delete">client.</span></td><td> </td><td class="rblock"> <span class="insert">created an updated response by combining</span> the stored response with the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> new one, so that the updated response can be <span class="insert">used</span> to <span class="insert">satisfy</span> the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> <span class="insert">request.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> If the <span class="delete">status code is 304 (Not Modified), the cache SHOULD use the</span></td><td> </td><td class="rblock"> If the <span class="insert">new response contains an ETag, it identifies</span> the stored</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> stored entity-body as the updated entity-body. If the status code is</span></td><td> </td><td class="rblock"> response <span class="insert">to use. [[anchor10: may need language about Content-Location</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> 206 (Partial Content) and the ETag or Last-Modified headers match</span></td><td> </td><td class="rblock"><span class="insert"> here]][[anchor11: cover case where INM</span> with <span class="insert">multiple etags was sent]]</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> exactly, the cache MAY combine the stored entity-body in</span> the stored</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> response with <span class="delete">the updated entity-body received in the response and</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> use the result as the updated entity-body (see Section 4 of [Part5]).</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> The stored response headers are used <span class="delete">for</span> the updated response, except</td><td> </td><td class="rblock"> <span class="insert">If the status code is 206 (partial content), both the stored and new</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> that</td><td> </td><td class="rblock"><span class="insert"> responses MUST have ETags, and those ETags MUST match using the</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> strong comparison function (see Section 4 of [Part4]). Otherwise,</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> the responses MUST NOT be combined.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> The stored response headers are used <span class="insert">as those of</span> the updated</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"> response, except that</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o any stored Warning headers with warn-code 1xx (see Section 3.6)</td><td> </td><td class="right"> o any stored Warning headers with warn-code 1xx (see Section 3.6)</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> MUST be deleted from the stored response and the <span class="delete">forwarded</span></td><td> </td><td class="rblock"> MUST be deleted from the stored response and the <span class="insert">updated</span> response.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> response.</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> o any stored Warning headers with warn-code 2xx MUST be retained in</td><td> </td><td class="right"> o any stored Warning headers with warn-code 2xx MUST be retained in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> the stored response and the <span class="delete">forward</span>ed response.</td><td> </td><td class="rblock"> the stored response and the <span class="insert">updat</span>ed response.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> o any headers provided in the <span class="delete">304 or 206</span> response MUST replace the</td><td> </td><td class="rblock"> o any headers provided in the <span class="insert">new</span> response MUST replace the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> corresponding headers from the stored response.</td><td> </td><td class="right"> corresponding headers from the stored response.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">A cache MUST also replace any stored headers with corresponding</span></td><td> </td><td class="rblock"> If a header field-name in the <span class="insert">new</span> response matches more than one</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> headers received in the incoming response, except for Warning headers</span></td><td> </td><td class="rblock"> header in the stored response, all such <span class="insert">stored</span> headers MUST be</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> as described immediately above.</span> If a header field-name in the</td><td> </td><td class="rblock"> replaced.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">incoming</span> response matches more than one header in the stored</td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> response, all such <span class="delete">old</span> headers MUST be replaced. <span class="delete">It MAY store the</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"><span class="delete"> combined entity-body.</span></td><td> </td><td class="rblock"></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">[[anchor14:</span> ISSUE: discuss how to handle HEAD updates]]</td><td> </td><td class="rblock"> <span class="insert">The updated response can [[[[anchor12: requirement?]]]] be used to</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> replace the stored response in cache. In the case of a 206 response,</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> the combined entity-body MAY be stored.</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"></td><td> </td><td class="rblock"><span class="insert"> [[anchor13:</span> ISSUE: discuss how to handle HEAD updates]]</td><td class="lineno" valign="top"></td></tr>
<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>
<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>
<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>
<tr><td class="lineno" valign="top"></td><td class="left"> The response-header field "Age" conveys the sender's estimate of the</td><td> </td><td class="right"> The response-header field "Age" conveys the sender's estimate of the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> amount of time since the response (or its validation) was generated</td><td> </td><td class="right"> amount of time since the response (or its validation) was generated</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> at the origin server. Age values are calculated as specified in</td><td> </td><td class="right"> at the origin server. Age values are calculated as specified in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Section 2.3.2.</td><td> </td><td class="right"> Section 2.3.2.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Age = "Age" ":" OWS Age-v</td><td> </td><td class="right"> Age = "Age" ":" OWS Age-v</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Age-v = delta-seconds</td><td> </td><td class="right"> Age-v = delta-seconds</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Age field-values are non-negative <span class="delete">decimal</span> integers, representing time</td><td> </td><td class="rblock"> Age field-values are non-negative integers, representing time in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> in seconds.</td><td> </td><td class="rblock"> seconds.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> If a cache receives a value larger than the largest positive integer</td><td> </td><td class="right"> If a cache receives a value larger than the largest positive integer</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> it can represent, or if any of its age calculations overflows, it</td><td> </td><td class="right"> it can represent, or if any of its age calculations overflows, it</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> MUST transmit an Age header with a field-value of 2147483648 (2^31).</td><td> </td><td class="right"> MUST transmit an Age header with a field-value of 2147483648 (2^31).</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Caches SHOULD use an arithmetic type of at least 31 bits of range.</td><td> </td><td class="right"> Caches SHOULD use an arithmetic type of at least 31 bits of range.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The presence of an Age header field in a response implies that a</td><td> </td><td class="right"> The presence of an Age header field in a response implies that a</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> response is not first-hand. However, the converse is not true, since</td><td> </td><td class="right"> response is not first-hand. However, the converse is not true, since</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l12" /><small>skipping to change at</small><em> page 19, line 13</em></th><th> </th><th><a name="part-r12" /><small>skipping to change at</small><em> page 19, line 21</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> client is not willing to accept a stale response.</td><td> </td><td class="right"> client is not willing to accept a stale response.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The max-stale request directive indicates that the client is</td><td> </td><td class="right"> The max-stale request directive indicates that the client is</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> willing to accept a response that has exceeded its expiration</td><td> </td><td class="right"> willing to accept a response that has exceeded its expiration</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> time. If max-stale is assigned a value, then the client is</td><td> </td><td class="right"> time. If max-stale is assigned a value, then the client is</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> willing to accept a response that has exceeded its expiration time</td><td> </td><td class="right"> willing to accept a response that has exceeded its expiration time</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> by no more than the specified number of seconds. If no value is</td><td> </td><td class="right"> by no more than the specified number of seconds. If no value is</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> assigned to max-stale, then the client is willing to accept a</td><td> </td><td class="right"> assigned to max-stale, then the client is willing to accept a</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> stale response of any age. [[anchor1<span class="delete">5</span>: of any staleness? --mnot]]</td><td> </td><td class="rblock"> stale response of any age. [[anchor1<span class="insert">4</span>: of any staleness? --mnot]]</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The min-fresh request directive indicates that the client is</td><td> </td><td class="right"> The min-fresh request directive indicates that the client is</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> willing to accept a response whose freshness lifetime is no less</td><td> </td><td class="right"> willing to accept a response whose freshness lifetime is no less</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> than its current age plus the specified time in seconds. That is,</td><td> </td><td class="right"> than its current age plus the specified time in seconds. That is,</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> the client wants a response that will still be fresh for at least</td><td> </td><td class="right"> the client wants a response that will still be fresh for at least</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> the specified number of seconds.</td><td> </td><td class="right"> the specified number of seconds.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> no-transform</td><td> </td><td class="right"> no-transform</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l13" /><small>skipping to change at</small><em> page 20, line 51</em></th><th> </th><th><a name="part-r13" /><small>skipping to change at</small><em> page 20, line 51</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The no-cache response directive indicates that the response MUST</td><td> </td><td class="right"> The no-cache response directive indicates that the response MUST</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> NOT be used to satisfy a subsequent request without successful</td><td> </td><td class="right"> NOT be used to satisfy a subsequent request without successful</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> validation on the origin server. This allows an origin server to</td><td> </td><td class="right"> validation on the origin server. This allows an origin server to</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> prevent caching even by caches that have been configured to return</td><td> </td><td class="right"> prevent caching even by caches that have been configured to return</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> stale responses.</td><td> </td><td class="right"> stale responses.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> If the no-cache response directive specifies one or more field-</td><td> </td><td class="right"> If the no-cache response directive specifies one or more field-</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> names, this requirement is limited to the field-values asso<span class="delete">sic</span>ated</td><td> </td><td class="rblock"> names, this requirement is limited to the field-values asso<span class="insert">ci</span>ated</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> with the listed response headers. That is, the specified field-</td><td> </td><td class="right"> with the listed response headers. That is, the specified field-</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> name(s) MUST NOT be sent in the response to a subsequent request</td><td> </td><td class="right"> name(s) MUST NOT be sent in the response to a subsequent request</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> without successful validation on the origin server. This allows</td><td> </td><td class="right"> without successful validation on the origin server. This allows</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> an origin server to prevent the re-use of certain header fields in</td><td> </td><td class="right"> an origin server to prevent the re-use of certain header fields in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> a response, while still allowing caching of the rest of the</td><td> </td><td class="right"> a response, while still allowing caching of the rest of the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> response.</td><td> </td><td class="right"> response.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Note: Most HTTP/1.0 caches will not recognize or obey this</td><td> </td><td class="right"> Note: Most HTTP/1.0 caches will not recognize or obey this</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> directive.</td><td> </td><td class="right"> directive.</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l14" /><small>skipping to change at</small><em> page 23, line 26</em></th><th> </th><th><a name="part-r14" /><small>skipping to change at</small><em> page 23, line 26</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The entity-header field "Expires" gives the date/time after which the</td><td> </td><td class="right"> The entity-header field "Expires" gives the date/time after which the</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> response is considered stale. See Section 2.3 for further discussion</td><td> </td><td class="right"> response is considered stale. See Section 2.3 for further discussion</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> of the freshness model.</td><td> </td><td class="right"> of the freshness model.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> The presence of an Expires field does not imply that the original</td><td> </td><td class="right"> The presence of an Expires field does not imply that the original</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> resource will change or cease to exist at, before, or after that</td><td> </td><td class="right"> resource will change or cease to exist at, before, or after that</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> time.</td><td> </td><td class="right"> time.</td><td class="lineno" valign="top"></td></tr>
<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>
<tr><td class="lineno" valign="top"></td><td class="lblock"> in Section 3.2<span class="delete">.1</span> of [Part1]; it MUST be sent in rfc1123-date format.</td><td> </td><td class="rblock"> in Section 3.2 of [Part1]; it MUST be sent in rfc1123-date format.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Expires = "Expires" ":" OWS Expires-v</td><td> </td><td class="right"> Expires = "Expires" ":" OWS Expires-v</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> Expires-v = HTTP-date</td><td> </td><td class="right"> Expires-v = HTTP-date</td><td class="lineno" valign="top"></td></tr>
<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>
<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>
<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>
<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>
<tr bgcolor="gray" ><td></td><th><a name="part-l15" /><small>skipping to change at</small><em> page 29, line 48</em></th><th> </th><th><a name="part-r15" /><small>skipping to change at</small><em> page 29, line 48</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> and Message Parsing", <span class="delete">draft-ietf-httpbis-p1-messaging-06</span></td><td> </td><td class="rblock"> and Message Parsing", <span class="insert">draft-ietf-httpbis-p1-messaging-07</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> (work in progress), <span class="delete">March</span> 2009.</td><td> </td><td class="rblock"> (work in progress), <span class="insert">July</span> 2009.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Semantics", <span class="delete">draft-ietf-httpbis-p2-semantics-06</span> (work in</td><td> </td><td class="rblock"> Semantics", <span class="insert">draft-ietf-httpbis-p2-semantics-07</span> (work in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> progress), <span class="delete">March</span> 2009.</td><td> </td><td class="rblock"> progress), <span class="insert">July</span> 2009.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> and Content Negotiation", <span class="delete">draft-ietf-httpbis-p3-payload-06</span></td><td> </td><td class="rblock"> and Content Negotiation", <span class="insert">draft-ietf-httpbis-p3-payload-07</span></td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Requests", <span class="delete">draft-ietf-httpbis-p4-conditional-06</span> (work in</td><td> </td><td class="rblock"> Requests", <span class="insert">draft-ietf-httpbis-p4-conditional-07</span> (work in</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> Partial Responses", <span class="delete">draft-ietf-httpbis-p5-range-06</span> (work</td><td> </td><td class="rblock"> Partial Responses", <span class="insert">draft-ietf-httpbis-p5-range-07</span> (work</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> in progress), <span class="delete">March</span> 2009.</td><td> </td><td class="rblock"> in progress), <span class="insert">July</span> 2009.</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">draft-ietf-httpbis-p7-auth-06</span> (work in progress),</td><td> </td><td class="rblock"> <span class="insert">draft-ietf-httpbis-p7-auth-07</span> (work in progress),</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno" valign="top"></td><td class="lblock"> <span class="delete">March</span> 2009.</td><td> </td><td class="rblock"> <span class="insert">July</span> 2009.</td><td class="lineno" valign="top"></td></tr>
<tr bgcolor="gray" ><td></td><th><a name="part-l16" /><small>skipping to change at</small><em> page 31, line 20</em></th><th> </th><th><a name="part-r16" /><small>skipping to change at</small><em> page 31, line 20</em></th><td></td></tr>
<tr><td class="lineno" valign="top"></td><td class="left"> was introduced to add this missing case. (Sections 2.1, 3.2).</td><td> </td><td class="right"> was introduced to add this missing case. (Sections 2.1, 3.2).</td><td class="lineno" valign="top"></td></tr>
<tr><td class="lineno"