Re: Problems with content negotiation (was: Re: Preemptive and reactive content negotiation)

> Accept: text/html, image/gif, image/jpeg;q=0.7, */*;q=0.9
>this would make the server send me text/x-tex, and my browser
>can't even handle text/x-tex!!

Well, you DID say */*;q=.9.... Try */*;q=.01.... And I don't think the case
of a server trying really hard to force a particular MIME type down a user
agent's throats is going to be a frequent one.  Negotiation is going to come
into play mostly for deciding whether to send a GIF or a JPG, and servers
will generally trust the UA's preferences when it comes to negotiation.

>- send small Accept with *: risk getting responses with mime types you
>  can't handle

A UA can always "Save As".

>- send small Accept without *: risk getting responses with inferior quality

Inferior according to the server, maybe.  Not inferior according to the
client.  The client is perfectly happy with what they got, because they
asked for it!

>- send small Accept with unused mime type: no risk, but slow because of 
>  an extra request-response round trip
>- send huge Accept without *: no risk, but slow because of huge
>  request message size.
>
>All of these are not very attractive.  This problem can be, and should
>be, fixed.

Nice list, accurately describes the situation.  I am not willing to call it
a problem however, because I am not willing to say there is a fix.  It seems
like a "that's life, deal with it, cake and eat it too"-situation.  The UA
can decide whether efficiency is more important to them, or getting the best
possible type.  Sending back a 300 and doing "reactive negotiation" is just
as slow as a 406.

<thinking cap on...>

Maybe something like:
A.  if ( (q[maxQitem] != maxq) || (qs[maxQitem] != maxqs) )
        then send 300
would appease you?  Of course, where do we draw the line...  do we do
B.  if (q[maxQitem] != maxq)
        then send 300
or
C.  if ( (q[maxQitem] != maxq) || (qs[maxQitem] != maxqs) ||
         (ql[maxQitem] != maxql) || (qc[maxQitem] != maxqc) ||
         (qe[maxQitem] != maxqe) )
        then send 300
?

Probably just going with B. would be nice, it's simple...

PS: With keepalives, reactive negotiation becomes alot cheaper.  Maybe 300's
should be sent under a greater number of circumstances on a keepalive
connection?  Did I just make an evil statement?
-----
Dan DuBois, Software Animal                          ddubois@spyglass.com
(708) 505-1010 x532                     http://www.spyglass.com/~ddubois/

Received on Saturday, 9 September 1995 08:52:33 UTC