Specifically, this lecture from Hellerstein's CS 186 is a good basis for understanding cache strategies.
https://www.youtube.com/playlist?list=PLhMnuBfGeCDPtyC9kUf_h... In general, the entire course is probably worth watching. In the end, optimizing performance means looking at the specific properties of an app and engineering specific tradeoffs of time, space, and robustness. That's what the lecture illustrates.