Re: Initializing HTTP headers from HTML documents

Dave_Raggett <dsr@hplb.hpl.hp.com>
From: Dave_Raggett <dsr@hplb.hpl.hp.com>
Message-id: <9401071648.AA08035@manuel.hpl.hp.com>
Subject: Re:  Initializing HTTP headers from HTML documents
To: ellson@hotsand.att.com
Date: Fri, 7 Jan 94 16:48:46 GMT
Cc: www-talk@www0.cern.ch
Mailer: Elm [revision: 66.36.1.1]
Content-Length: 2408
In response to John Ellson:

>> Since EVAL expressions would be evaluated by the server, it seems reasonable
>> to come up with a consensus approach like CGI to ensure a degree of
>> standardisation. Would you like to come up with a proposal?

> I could try.  But let me make sure that we agree on what problem needs
> solving.

> I thought you were addressing a cache coherency problem:

The EVAL idea is to allow headers to be included in responses which
can be dynamically evaluated by servers before sending the response.
I can envisage cron jobs which walk through the cache and use the HTTP HEAD
command to query the server for an update on the document status. The EVAL
mechanism could be very effective when triggered in this way, without the
need to transfer the document itself, especialy, when the document is
generated automatically from other information.

>        before serving a document a cache server should check if 
>        the original document still exists and if it is unchanged.

I see this as too inefficient for most people. The Expires: header can
be used when a client requests a document without the expense of
contacting the server. The following points can be met more effectively
by the cron job (cache minder) run at a suitable interval.

>        if it no longer exists the no document should be served
>        and the cache copy should be purged.

>        if it has changed then the cache should be refreshed and the
>        new version served.

>        if the original site cannot be contacted then the document
>        should be served with a warning that the validity of the
>        document could not be verified.

The cache minder can handle all these effectively, using the HTTP error
codes and the Last-Modified: header.

> If Expires is an optional attribute provided by the author then what
> prevents stale copies staying indefinitely in cache servers?

The cache minder will handle this eventuality.

> If it turns out that we agree that something is required to make cache
> servers operate correctly, then should the additional mechanism be
> user visible, or should it be built into the client-server protocols?

I am considering an NFS-based cache with a simple UDP protocol to get the
file name for URLs which are present in the cache. In this case, the clients
will need to be configured to know their address/port for this protocol.

Dave Raggett