  We study a cache network in which intermediate nodes equipped with caches can
serve requests. We model the problem of jointly optimizing caching and routing
decisions with link capacity constraints over an arbitrary network topology.
This problem can be formulated as a continuous diminishing-returns (DR)
submodular maximization problem under multiple continuous DR-supermodular
constraints, and is NP-hard. We propose a poly-time alternating primal-dual
heuristic algorithm, in which primal steps produce solutions within
$1-\frac{1}{e}$ approximation factor from the optimal. Through extensive
experiments, we demonstrate that our proposed algorithm significantly
outperforms competitors.
