Pre-storing data in caches (memories) close to the end users during periods of low network congestion or good connectivity, is one of the most promising ways to increase rates and to decrease latency and energy consumption in future communication and compression systems. Before such systems can be put in place, important questions however have to be addressed: How much and which information should be pre-stored in the caches? How should this information be pre-stored? How should one communicate or compress in the presence of pre-stored data? What are the benefits in rates, latency, and energy efficiency that can be attained through caching?In this talk we will present recent information-theoretic results addressing theses questions. Specifically, we will explain and analyze simple algorithms, and provide intuition on how to derive information-theoretic upper bounds on the optimal performance. We shall also present the new concept of joint cache-channel coding (like our recent piggyback coding) as a way to improve communication in cache-aided networks, and we will illustrate the roles of the Wyner and the Gacs-Korner common informations in cache-aided compression systems. A particular focus of the talk will be on energy savings offered by caching.The talk is based on joint work with Bernhard Geiger and Roy Timo from TU Munich, and with Shirin Saeedi Bidokhti from Stanford University.