As is have written: I does not know, when the underlying chunk map is changed.
Sometimes a chunk is at first set to an empty chunk and then loaded. The cache still returns the empty chunk and so everything goes the wrong way...
Another thing happens, when a chunk is unloaded/reloaded, then the cache will still contain the old version of the chunk which is never saved.