[Http-crcsync] General comments on crcsync document
Patrick McManus
mcmanus at ducksong.com
Wed Jul 8 23:12:53 EDT 2009
On 7/8/09 10:23 PM, Pedro R wrote:
> What about another way: no crcsync headers are sent by the client, except for
> "crcsync" appended to "Accept-Encoding:"?
> When the server detects that a client accepts crcsync, it will send the crcsync
> block response.
> That way, the server is free to response in every way it feels apropriate and the client
> does not need to send any extra headers, saving a few precious bytes.
>
Hi! It must be kind of late in Portugal, no?
I've got no problem with just sending if-block to any old server you
know nothing about. You don't need to verify beforehand that it knows
how to do this particular delta spec. If we use the current spec
terminology, I don't see the need for a new accept-encoding token to do
so, though as a separate issue I do agree that it makes sense to talk
about whether this should all be done with
accept-encoding/content-encoding/vary instead of the way it is currently
deined.
so you don't require OPTIONS in your implementation (either client or
server). I agree. But you might _want_ to use OPTIONS to probe for
deltas simply because creation of the If-Block header is conceivably
pretty expensive. This is where the comparison with gzip breaks down..
adding the gzip request header is just a matter of appending a constant
string, where the If-Block is considerably more involved - so you might
want to know if the other end even understands it before you do so.. and
yes, that can cost a round trip and still be a worthwhile endeavor
(especially if you can reliably cache and reuse the result). I think
"Expect: 100-continue" is kind of a similar thing.
meanwhile as an alternative, you might define a response header similar
to accept-ranges which would allow the server to advertise its support
for deltas even on responses that do not contain them.. (i.e. it means
"I can do deltas" not "this is a delta") this eliminates the need for
either probing with options or having the client proactively computing
if-block lists (which hit the server side cache) on the first request
submission while maintaining the separation between capability and use.
(the key difference between accept-ranges and accept-encoding is that
accept-ranges is a response header instead of a request header.. it is
the only accept-* header that is a response header that leaps to mind.)
make sense?
-Patrick
More information about the Http-crcsync
mailing list