1. A network comprising: a first cache server; and a network aware server comprising a processor, operable to: determine at the network an optimization between a cost of retrieving content from a communication network and a cost of caching content from the communication network at the first cache server, wherein the optimization is determined by finding a minimum of a sum of a transit cost, a backbone cost, and a caching cost, wherein; the transit cost (TC) is defined as: 
 TC=βΣt s ·( v i,j,s ·(1 −c i,s )+ u i,j,s ·c i,s ), where P is the set of points of presence, S is the set of source addresses, β is a unit of transit cost, t is a monthly cost per traffic volume, v is a monthly traffic volume between i and j from s that is cacheable, u is a monthly traffic volume between i and j from s that is uncacheable, and c is a Boolean value associated with cacheability; the backbone cost includes a money cost per data unit and time unit for the network; and the caching cost includes a money cost per server unit for the network; and in response to determining the optimization, send a first content identifier to the first cache server; wherein the first cache server is operable to: receive the first content identifier; determine a first source of a first content item; and if the first source is the same as the first content identifier, then cache the first content item.