Now that we have the ability to know when Cache Entries have expired, we need to implement a mechanism to actually remove expired Cache Entries as the current implementation does not actually remove expired entries. Instead said entries just appear and behave as if they are "missing". They are still held onto internally.
This can and should be an asynchronous process.
NOTE: We perhaps should add access and modification counts to each RICachedValue so that the "pruning" process can choose to implement pruning based on LFU (least frequently used), LFA (least frequently accessed) and LFM (least frequently modified), or some other algorithm.
Now that we have the ability to know when Cache Entries have expired, we need to implement a mechanism to actually remove expired Cache Entries as the current implementation does not actually remove expired entries. Instead said entries just appear and behave as if they are "missing". They are still held onto internally.
This can and should be an asynchronous process.
NOTE: We perhaps should add access and modification counts to each RICachedValue so that the "pruning" process can choose to implement pruning based on LFU (least frequently used), LFA (least frequently accessed) and LFM (least frequently modified), or some other algorithm.