- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Wed, 07 Aug 96 16:13:26 MDT
- To: Koen Holtman <koen@win.tue.nl>
- Cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
I thought up another fix some hours after I sent my message: adopt the
rule that a server which is only relaying, not generating, a response
must not count it. In the above example, the origin server itself
would count the hit, not any upstream proxy cache.
This way, when serving a request the origin server can immediately add
1 to its total hit count. With my earlier fix, it would have to wait
for proxy 2 to report the hit in a future request.
This sounds reasonable, although I want to spend some time working
out all of the cases before I'm sure. It's also important to optimize
the "1-hit" case, since various cache studies have shown that most
URLs (even the cachable ones) are not re-referenced before being
deleted from the proxy cache. I.e., we want this mechanism to work
in such a way that if a proxy only uses an entity once, then there
are no extra messages sent.
So, for example, the sentence that says:
When a proxy first caches R, it should set U to 1.
might have to be changed to
When a proxy first caches R, it should set U to 0.
and then the examples would also need to be changed.
I'm primarily worried about the filesystem read/write overhead needed
to maintain the counters. I would like to hear an implementer say
that this is not a problem.
We say several times that this is a "best-efforts" mechanism. I think
at one point we discussed explicitly stating that a proxy does NOT
have to keep the counts in non-volatile (crash-proof) storage.
Unless your proxy crashes frequently (which would make it rather
unattractive in the first place), there is no reason to require
a file-system write to update a counter. Certainly, it need not
be a synchronous write. (If asynchronous writes were such a problem,
proxies wouldn't keep multiple log files the way they do now.)
-Jeff
Received on Wednesday, 7 August 1996 16:21:37 UTC