- From: Brian Behlendorf <brian@organic.com>
- Date: Tue, 14 Nov 1995 09:42:20 -0800 (PST)
- To: Laurent Demailly <dl@hplyot.obspm.fr>
- Cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
On Tue, 14 Nov 1995, Laurent Demailly wrote:
> I agree that there should be some *opaque* string used to select if the
> object is the same or not (string which could be for instance a last
> modified date, an MD5 digest,... whatever the server wants)
While this sounds good in theory, I believe there are situations where
this breaks down.
Time Action
T+0: client A connects through proxy1.bigISP.com to a server which
contains a document which changes hourly, and has a CID of "X".
T+1h: client B connects through proxy2.bigISP.com to the same server,
and gets the hourly-changing document which now has a CID of "Y".
T+1h1m: client B "refreshes" the page by doing an IMS request, but this
time goes through proxy1.bigISP.com, either because of round-robin
DNS or some sort of client load-balancing[*].
client B says "send me the document, unless it has the CID of 'Y'"
proxy1.bigISP.com sees its CID is "X", not "Y", and sends the OLD
DOCUMENT.
[*] - consider the 20+ proxies that AOL uses, sometimes one user can go
through multiple proxies in the same session to a server!
Now, you can say that the server is negligent for not adding "Expires"
headers, but at any rate this works now with true If-Modified-Since. And
my general gut feeling is that when you design protocols they should map
to users and application builder's metaphors as closely as possible -
just asking "is this document different" is *much* different than asking
"is this document more recent".
That said, I think what we need for doing conditional requests is a
general grammar to which we can apply file attributes. Something like
Send-If: "Last-Modified" > "Nov 14 10:26:03 1995" &&
"Content-Digest" != "MD5=0906bdfddce0964b42ad656"
By allowing equalities, inequalities, greater-than/less-than, and
conjunctions, we remove the need for "Send-Unless", for
"In-Not-Modified-Since", and lots of other things I'm sure we'll find.
Since the "fallback" for conditional requests is to get the entire
document, if the server can't determine enough attributes about the
requested object to answer the conditional query, it can just send the
document.
Simon, does HTTP-NG have something along these lines?
Brian
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--
brian@organic.com brian@hyperreal.com http://www.[hyperreal,organic].com/
Received on Tuesday, 14 November 1995 10:38:11 UTC