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).
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.