Check out this article over at Alachisoft, showing you how to use Distributed Object Cache with SQL server 2005. I can see where this comes in very handy.
Say you have 4 front end web servers, all connecting to 2 load balanced App Servers, which in turn talk to 2 clustered DB servers. Well, you don’t want to hit all three tiers when making a web request, so you use Caching on the App tier. That will cache the info from the DB, and use it for each request from the front end. But what if the requests are the same? Well, you would cache some on the front end, and only go to the App tier if required.
My thinking behind this would be as follows:
Using the Caching Application Block, set the front end to cache the data for a set amount of time (say a minute). I think there is an option to invalidate the cache, if your App layer tell it to.
The App layer should tell the front end to invalidate cache once it gets a notification from the DB that it has changed. for this you would use the NCache.
Depending on what data is being sent back from the App Servers, and depending on how frequent it could change, you may not cache all Data on the front end.