Caching is the act of reducing network requests or computation. Backend caching may consist of saving the result of a rigorous computation (say, generating statistics) so that when the client requests it a second time, we don't have to crunch the numbers again. Client-side caching usually consists of saving the response of a network request so that we don’t have to make that call again.
As we said before, service workers are bits of code that sit between our application and the network. This means they are perfect for caching, as they can intercept a network request and respond with the requested file, grabbing it from the cache instead of the server; time is saved.
From a broader perspective, you can think of caching as not having to do the same thing more than once, using memory to store the result.
The upside of caching with Progressive Web Apps...