1. A network comprising: a first cache server; and a network aware server operable to perform a method including: 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 the network; the backbone cost includes a money cost per data unit and time unit for the network; and the caching cost is defined as: CC = γ · ∑ ∀ i ∈ P [ max ( ∑ ∀ j ∈ P , s ∈ S c i , s · v i , j , s / e , ∑ ∀ j ∈ P , s ∈ S c i , s · v i , j , s / b ) ] where P is a set of points of presence, S is a set of source addresses, γ is a cache server cost, v is a monthly traffic volume between i and j from s that is cacheable, c is a Boolean value associated with cacheability, e is a cache server throughput, and b is a cache server disk space; 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.