Tradicionalmente, o CDN faz o levantamento para você em recursos estáticos.
Digamos que você permita envios de imagens para seu site. Depois de fazer o upload, você precisa redimensioná-lo em miniaturas e, em seguida, exibir os dados resultantes no navegador, quando necessário.
Um CDN poderia cuide de algumas dessas coisas para você . Mas um CDN é normalmente usado para tornar o download de recursos estáticos muito mais eficiente, tendo um servidor mais próximo do usuário usado automaticamente via DNS AnyCast (que é caro e difícil de implantar sozinho - você pode bem como usar o sistema de outras pessoas por uma taxa nominal). Após o pós-processamento inicial de um upload de imagem, não "custa muito" pegar um recurso estático e enviá-lo ao cliente.
Mas o que você realmente precisa fazer é descobrir o que está atrapalhando seu servidor e resolver isso. Você não joga apenas soluções (e dinheiro) na parede até que um deles grude.
Você precisa criar um perfil de seu servidor e seu fluxo de trabalho e identificar qual é realmente o gargalo. Poderia ser um segmento de trabalho de merda, ou talvez você só precisa adicionar um cabeçalho de cache a um recurso pesado para gerar que não precisa gerar o tempo todo (apenas um exemplo, eu percebo que você disse que já está usando um camada de armazenamento em cache). Talvez você simplesmente não tenha RAM suficiente ou seu banco de dados esteja sendo executado em discos de 5400 rpm.