I don't see how it's any different than when not using REST.
If you allow filters, you can't exactly cache each page, unless you have infinite memory or a severe limited amount of filters.
This is more related to having good paging/querying speeds.
If you are thinking of advanced filtering, you should probably use something built for that, like Lucene and Solr.
If you want to cache, per filter per page thing, then I normally just make a cache entry for each result set. Then if the data changes I just destroy the cache for that resource and they get built up as they get requested, it isn't such a big deal as long
as your data doesn't constantly change.
You can also only re-cache every so often. So have the read-only from the cache and only update it every like 5-10 minutes. You can have a job that does it, or built into the query from the cache. (Making cache invalidate itself, or a service to invalidate)