I agree with pretty much everything in this post, though I would add one more thing. It&#x27;s not so much a downside of caching as a misuse: Application-level caches should never cache local data. Cache network responses. Cache the results of computations. Don&#x27;t cache files or disk reads. Operating systems already implement disk caches, and they do a better job of it than you. That&#x27;s in addition to a modern computer&#x27;s numerous hardware caches. For example, take this code:<p><pre><code>    ...
    FILE *fp = fopen(&quot;example.txt&quot;, &quot;r&quot;);
    char dest;
    int bytes_read = fread(&amp;dest, 1, 1, fp);
    putchar(dest);
    ...
</code></pre>
Think of how many caches likely contain the first byte of example.txt. There&#x27;s the internal cache on the hard disk or SSD. There&#x27;s the OS&#x27;s filesystem cache in RAM. There&#x27;s your copy (dest) in RAM, and also in L3, L2, and L1 cache. (These aren&#x27;t inclusive on modern Intel CPUs. I&#x27;m just talking about likelihood.) Implementing your own software RAM cache puts you well into diminishing returns. The increased complexity simply isn&#x27;t worth it.