For optimal performance, PMA.core support both tile cache and cloud cache.
We have a strategy where cache is deleted after a retention period automatically and no new cache is created if there is not enough disk space.
Extracted tiles from WSIs are stored in a cache repository. This is Just In Time (JIT) caching: the tiles are only stored in the cache after being generated for the first time.
When many people look at the same slide, they are typically interested in the same regions of interest and slide details. This means that as a system is used over time, almost all of its accessed content will be available through the tile cache. Tile caching in this regard also makes PMA.core a much more scalable system than it would be without this mechanism.
PMA.core will not cache tiles or thumbnails if there is not enough disk space (as defined in the settings).
Slides that are retrieved through cloud storage like S3 or Azure, benefit from an additional layer of caching.
Based on requests received from clients, PMA.core will retrieve part of the original slide from cloud storage, and keep that in a local cache repository. From that data chunk eventual tiles are extracted.
It is impossible to load an image from cloud storage if there is no disk space.
Let's assume that the whole disk space is 100GB, currently consumed is 95GB and PMA.core is instructed not to cache if there is not at least 1GB of free space. Furthermore, let's assume the retention days is set to 30 and that all the cache has been created in the last 10 days.
If now there are 10 or 100 requests to load different images, PMA.core has to cache chunks of these images and suddenly there is no space and there is nothing that can be deleted.
you can take this to a higher extreme and assume you have 100GB free space on a 100GB disk and you receive 100s of requests for “Image Info”. This will again cause PMA.core to store chunks of 100s of images to the disk simultaneously, and may end up in a full disk (without breaking any rule).
After this point nothing works, because PMA.core doesn't know what to delete; all the cache is fresh. You now have to purge the cache folder(s) manually, after which the build process may re-commence (you may also provide more storage for your cache repositories this time around).