A distributed cache works by moving frequently requested pages closer to the nodes making the request. Say, everytime a page is requested, the closest server caches the page, chucking out the least recently used page to make room.
However, if the page from the source site has changed or if it is dynamically generated, how do you ensure the client site gets the latest version? This is trivial in something like a computer's virtual memory caching system because the entire universe is controlled by a central processing unit, but on a distributed fault-prone network, this can become complex.
The alternative would be no caching but that leaves us with slow bottlenecks, denial of service attacks, the SlashdotEffect and server failure preventing content distribution.
With network failures etc, the cache won't really be able to control its 'distance' from the true source of data. Therefore it won't be possible to set a hard upper limit on the out-of-datedness of the cache, rather that limit will be inherited from the physical structure of the internet. So the cache should inform clients of the expected delay in information it holds, and if they don't like that the client goes to a closer source.
As I see it this kind of smart cache would be superimposing another virtual structure on the internet, in many ways very similar to DNS name resolution. Worth looking in RFCs on DNS implementation problems for issues and solutions?? --JamesCrook