Thanks for the kind words, glad you're finding it useful!
AgFx doesn't have much pluggabiity for custom cache policies, so I don't think that's the best method.
I think (1) works fine, another way you could do this is in your Deserialize method, where you would look at the timestamp on the data and just throw if the timestamp is older than a day. You'd use CacheThenRefresh(10 minutes) here.
If your webservice doesn't have a good timestamp in the original data (because there's no direct way in Deserialize to differentiate between a cache read and a live read), then you can do a couple of things. Probably the most reliable would be to
write a custom LoadRequest that injects a timestamp into the stream somehow. Then, in Deserialize, as I mention above, you'd just throw if the data is older than a day.
Another way is to set an AutoRefresh time of 10 minutes, but that might not give you exactly what you want. What you could do here is have a timer in your app that fires every 10 minutes, does a Load on the data, and if it comes back older than 10
minutes, calls Refresh on it.
There's probably some more ways to do this as well, those are the ones that I think of off the top of my head.