Goal
Full support of IMS, both from clients and as a method for validating & update
of cached objects.
ToDo list (more or less ordered)
- Return the appropriate headers with the 304 response.
- Make the code a bit more general, to support HEAD on cached
objects as well.
- Update the cached object when we receive a 304 response.
(expunge the cached object when the response is different from
the cached object).
- Cache IMS responses when we do not have a object to update.
- Make IMS hierarchical.
- Use IMS to update objects.
Use a wheight factor to determine how often a cached object should
be validated (with the possibility to always validate the object
before it is sent to the client).
r
Expired objects should always be validated before sent to the client.
- Turn off deletetion of expired objects.
- Optimize the LRU replacement. It should be possible to have the LRU
replacement running continously without any performance loss.
Optimized LRU replacement
- Build a stack of objects that is candidates for deletetion, sorted on LRU.
- When objects are swapped out, delete objects from the stack to
make room for the new object if we are going abowe the high water
mark (emergency deletetion).
- When objects are used/deleted, remove them from the stack (if they are
on the stack).
- Continously delete objects from the stack (one at a time) while we are
above the low water mark.
- When the stack is empty, build a new one.
Henrik Nordström