1. A network comprising: a first cache server; and a network aware server that includes a memory and a processor that executes instructions from the memory to perform operations, the operations comprising: determining, 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 includes a money cost per data unit for an internet service provider network; the backbone cost is defined as: BC = α ⁢ ∑ ∀ i ∈ P , j ∈ P , s ∈ S ⁢ l i , j · ( 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 backbone cost, l is a distance between i and j, 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; and the caching cost includes a money cost per server unit for the internet service provider network; in response to determining the optimization, sending 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.