Topic:
interface
Class:
Technical
Title:
Caching Mechanism
Document Section: Interfaces/6.1
Description:
I am
submitting the following proposition to the committee as a proposition for
dealing with caching of the markup. This proposition deals with
"Expires"-like methods of caching, along with "If-Modified-Since/ETags" type
of caching. I believe it is simple enough to be included in the v1.0
spec.
Caching Proposal
[The
proposal is described as edits to the spec]
6.1 Operations [getMarkup]
[instead of expires in markupResponse, add the
following]
cacheControl: A data structure,
defined in Section 11, which includes information which CAN be used by the
Consumer to cache the markup. This structure
includes:
validUntil: The time at which the markup is valid. Until that time the Consumer CAN
use its cache entry instead of calling getMarkup. After this time passes, the
Consumer MAY continue to use this cache entry, but only after validating it
with a getMarkup operation, using the validationTag below, if given.
validationTag: The Consumer MUST store this tag along with the markup while the markup is valid.
This enables the Producer to use this tag to invalidate the cache entry by
sending an invalidationTagPrefix in the
performInteraction operation.
After the markup expires, the
Consumer CAN send the validationTag in the markupResponse to indicate that it still has the markup but would like to
validate it. The Producer returns a fault response [TBD] to indicate
that the markup is still valid, otherwise if it returns markup , the
Consumer MUST invalidate the old markup.
[add to
markupContext the following
field]
validationTag: This field CAN be sent to indicate that the Consumer has
cached markup (which was tagged by the Producer with this value) and wishes
to check whether it is still valid. See validationTag in markupResponse for more information.
6.1
Operations [performInteraction]
[add
the following field to interactionResponse]
invalidationTagPrefix: If the Producer returned
this value, the Consumer MUST expire all markup-s who's validationTag begins with this value. The
Consumer MUST not call getMarkup with these invalidationTag-s to validate these expired markup-s.
[add
these fields to the relevant places in section 11]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Discussion: