naming is hard

Caching is hard

There are only two hard things in computer science: cache invalidation and naming things

Phil Karlton

Caching is ubiquitous in software development. Merely any complex system have a caching layer for better performance:

Not surprisingly, caching is well studied problem where you can find tons of materials (papers, lectures, blog posts, etc) about any possible aspect of the problem (cache eviction policies, CPU cache associativity, distributed caching approaches, etc).