  This paper aims to provide an optimization framework for coded caching that
accounts for various heterogeneous aspects of practical systems. An
optimization theoretic perspective on the seminal work on the fundamental
limits of caching by Maddah Ali and Niesen is first developed, whereas it is
proved that the coded caching scheme presented in that work is the optimal
scheme among a large, non-trivial family of possible caching schemes. The
optimization framework is then used to develop a coded caching scheme capable
of handling simultaneous non-uniform file length, non-uniform file popularity,
and non-uniform user cache size. Although the resulting full optimization
problem scales exponentially with the problem size, this paper shows that
tractable simplifications of the problem that scale as a polynomial function of
the problem size can still perform well compared to the original problem. By
considering these heterogeneities both individually and in conjunction with one
another, insights into their interactions and influence on optimal cache
content are obtained.
