Cache remote content

I would like to build an app which one will fetch and display data from API.
Additionally to that I would like to cache API responses and later on fetch them
from cache in first place (and sync new data in the background), or just display them
if user has no connection. API data has some content + images, I need to cache them both.

Could you help me to decide which technology stack should I use to achieve that,
right now I’m considering:

  1. PouchDB into sql lite + save images in some other way
  2. Service Workers

I will be glad if someone could help me decide, based on some experience.