"potentially gigabytes of data" is now a microSD card smaller than my thumbnail, or alternately the cheapest instance on AWS.
Local caching will be the way to go.
All resources will have a "date_updated" or similar attribute which you can check against.
Ahh, if only HTTP had defined a standard header for checking if the requested content has been modified, and sending a specific status code if that's the case...