If using a chain resolver, it is likely that dynamic revisions found in multiple child resolvers with thrash each other and negate the affect of using the cache.
Currently, if a chain resolver has two children, r1 and r2, and is asked to resolve "latest.integration", the logic is:
1. Ask r1 if it can resolve latest.integration. It looks in the ivycache, finds nothing, so hits the network, and finds 1.1.
2. Ivy creates a ivydata-latest.integration.properties file to cache that latestion=integration=1.1 and that it came from r1.
3. Ask r2 if it can resolve latest.integration. It looks in the ivycache, finds the latest.integration=1.1, but the resolver for that is r1, so it must hit the network, and finds 1.0. It is not newer, so 1.1 stays in the cache.
Basically, r2 is not given the chance to write "my latest.integration = 1.0" anywhere in the cache, so it must hit the network any time it's asked for latest.integration.
Instead, both r1 and r2 should be able to cache what latest.integration means to them.