The SRP is first and foremost a principle for classes and/or modules, not for functions. Hence it is debatable if your case really applies to the SRP. My recommendation here is: do yourself a favor and stop thinking in terms like "how do I follow this principle" - better think in terms like "what makes most sense for my case".
In this case, in can perfectly make sense to have
- one function that downloads data
- a second function which caches the downloaded data
- a third function which tests if the cache data is "too old"
- and a fourth function which just calls the other three, coordinates them and returns either the cached or the downloaded data (this might also be the public entry point, whilst the other functions stay private)
But for deciding if that's a useful structure, I personally would prefer to look at the real code, not make some hypothetical discussion.