[Http-crcsync] http-sync standard
Alex Wulms
alex.wulms at scarlet.be
Sat Apr 25 09:30:08 EDT 2009
Op maandag 20 april 2009, schreef tridge at samba.org:
> Hi Toby,
>
> > * Use the 226 response type to resolve the caching intermediate proxy
> > problem.
>
> How would the 226 response type interact with existing proxies that
> don't understand it?
The authors of RFC3229 assume that HTTP 1.0 proxies forward responses that
they don't understand but that they do not cache them. And that is the
problem that they try to resolve (e.g. intermediate HTTP 1.0 proxies should
not cache a delta-encoded response).
See below a full extract of that specific section of the RFC (from
http://www.ietf.org/rfc/rfc3229.txt):
However, a simplistic application of this approach would cause
serious problems if a delta-encoded response flows through an
intermediate (proxy) cache that is not cognizant of the delta
mechanism. Because the Internet still includes a significant number
of HTTP/1.0 caches, which might never be entirely replaced, and
because the HTTP specifications insist that message recipients ignore
any header field that they do not understand, a non-delta-capable
proxy cache that receives a delta-encoded response might store that
response, and might later return it to a non-delta-capable client
that has made a request for the same resource. This naive client
would believe that it has received a valid copy of the entire
resource, with predictably unpleasant results.
To solve this problem, we propose that delta-encoded responses
(actually, all instance-manipulated responses) be identified as such
using a new HTTP status code. For specificity in the discussion that
follows, we will use the (currently unassigned) code of 226, with a
reason phrase of "IM Used". (We see no benefit in spelling out the
words "Instance Manipulation Used," since this requires the
transmission of unnecessary bytes, and this Reason-phrase should not
normally be seen by human users.) There is some precedent for this
approach: the HTTP/1.1 specification introduces the 206 (Partial
Content) status code, for the transmission of sub-ranges of a
resource. Existing proxies apparently forward responses with unknown
status codes, and do not attempt to cache them.
An alternative to using a new status code would be to use the
"Expires" header to prevent HTTP/1.0 caches from storing the
response, then use "Cache-Control: max-age" (defined in HTTP/1.1) to
allow more modern caches to store delta-encoded responses. This adds
many bytes to the response headers, and so would reduce the
effectiveness of delta encoding. It is also not entirely clear that
this approach suppresses all caching by all HTTP/1.0 proxies.
We were reluctant to define an additional status code as part of
the support for delta encoding. However, we see no other
efficient way to remain compatible with the deployed base of
HTTP/1.0 cache implementations.
Cheers,
Alex
More information about the Http-crcsync
mailing list