Application State was thought to share information within the application, it contains a simple mechanism of synchronization, that allows the programmers to handle the concurrence easily, the pairs (Key/Values) are never removed unless they are replaced, although the main aim is to share information, it can also be used like a mechanism of optimization as you can see in the Article. In the other hand, Application Cache is a powerful, easy-to-use caching mechanism that allows you to store objects that require a large amount of server resources to create in memory, it also offers powerful features that allow you to customize how items are cached and how long they are cached, the cache automatically removes seldom used or unimportant items to allow memory to be used to process a high volume of requests, You can also establish an expiration policy for an item when you add it to the Cache.
As explained, although they can be used with similar aims, its primary targets are different.
Hope this help
Ricky
Ricardo D. de Guzmán
Tercer Planeta