p6 2.7 combining 206 & ETag, p5 5.3 If-Range

The requirements regarding combining partial responses have changed and
is stricter than 2616. 2616 only required a strong cache validator which
MAY mean Last-Modified in certain conditions (p4 4) not that there
necessarily is an ETag. Is this change really intended? Please note that
If-Range do allow for Last-Modified based validators.

Additionally p5 5.3 does allow for Last-Modified to be used in If-Range,
but does not really allow the server to respond with 206 in such case...


2616 13.5.4:

      - Both the incoming response and the cache entry have a cache
        validator.

      - The two cache validators match using the strong comparison
        function (see section 13.3.3).

p6 2.7:

        If the status code is 206 (partial content), both the stored and
        new responses MUST have ETags, and those ETags MUST match using
        the strong comparison function (see Section 4 of [Part4]).
        Otherwise, the responses MUST NOT be combined.



p5 5.3:

        If the client has no entity tag for an entity, but does have a
        Last-Modified date, it MAY use that date in an If-Range header.
        [...]
        
        If the entity tag given in the If-Range header matches the
        current entity tag for the entity, then the server SHOULD
        provide the specified sub-range of the entity using a 206
        (Partial Content) response. If the entity tag does not match,
        then the server SHOULD return the entire entity using a 200 (OK)
        response.


Suggested changes:

p6 2.7:

        If the status code is 206 (partial content), both the stored and
        new responses MUST have cache validators, and those cache
        validators MUST match using the strong comparison function (see
        Section 4 of [Part4]). Otherwise, the responses MUST NOT be
        combined.


p5 5.3:

        If the cache validator given in the If-Range header matches the
        current cache validator for the entity, then the server SHOULD
        provide the specified sub-range of the entity using a 206
        (Partial Content) response. If the cache validator does not
        match, then the server SHOULD return the entire entity using a
        200 (OK) response.

(only suggesting changing that paragraph, not removing the other one
partially quoted above)

Regards
Henrik

Received on Friday, 24 July 2009 00:24:33 UTC