1. A method of caching, the method comprising: storing storage blocks in a cache memory, each of the storage blocks being associated with status indicators; as requests are received at the cache memory: processing the requests; and updating the status indicators associated with the storage blocks in response to the processing of the requests; selecting one or more storage blocks for eviction when a storage block limit is reached; as the selected one or more storage blocks are evicted from the cache memory, updating block counters based on the status indicators associated with the evicted storage blocks, each of the block counters being associated with a corresponding combination of the status indicators; and periodically updating caching statistics based on the block counters.