- From: Lou Montulli <montulli@netscape.com>
- Date: Wed, 02 Oct 1996 11:32:47 -0700
- To: Henrik Frystyk Nielsen <frystyk@w3.org>
- Cc: "Roy T. Fielding" <fielding@liege.ICS.UCI.EDU>, rlgray@raleigh.ibm.com, http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Henrik Frystyk Nielsen wrote: > > "Roy T. Fielding" writes: > > > Section 14.36.1 of draft 7 says that if the last-byte-pos is greater > > > than the current length fo the entity-body, it should be taken to be > > > one less than the current length of the entity-body in bytes. > > > > > > While this is tolerant, it is not rigourous. One (the only?) case > > > where this could happen is for a client to make an unconditional > > > request for an entity that has changed (i.e., the request would fail if > > > it were qualified with the appropriate validator). > > > > Nope, Ted's comments in Paris were discussed at length when the editors > > met in Palo Alto. The reason for the above rule (which I didn't know > > when I was in Paris) is that it allows a resource-constrained client, > > such as a palmtop viewer, to always limit its requests even when it has > > no idea how large the response will be. Thus, it allows the client > > to cleanly request only what it knows it can handle, and therefore may > > reduce unnecessary network transfer and/or broken connections. > > Regarding byte ranges, I have been playing with making ranges effective > to stop and restart the load at a later time. The reason was to come up > with some figures for how much you can gain over a slow link (modem, for > example). This is something that will be needed even with a possible > session layer below HTTP as the bandwidth may be so limited that it is > difficult/impossible to have multiple background loads going on at the > same time. > > These are the points that I have so far - comments are welcome! Navigator has had this feature since January and it has proved to be very effective for slow modem connections. Our algorythm is as follows. *Normal load starts. *User interrupts load via stop button or clicking on another link. *The cache recognizes that the server supports byte ranges via the Accept-ranges header and stores the partially cached file along with the full content length. *User returns to partially cached object *Navigator issues an If-modified-since request to see if the object has changed. If the object has changed we download the whole object again, otherwise we move to the next step. *We issue a byte range request for the rest of the object and stream the whole object to the parser. When I had originally implemented this I had thought about a different request type that could perform the If-modified-since request and the byte-range request at the same time. I threw out the idea because I thought it was overly complicated and difficult to express. :lou -- Lou Montulli http://www.netscape.com/people/montulli/ Netscape Communications Corp.
Received on Wednesday, 2 October 1996 11:39:21 UTC