Знаете ли вы, где находится ваше узкое место?
Я полагаю, что ваша база данных является узким местом, но если вы не определите, где находится это узкое место, вы, вероятно, потратите много времени на оптимизацию вещей, которые могут не иметь большого значения.
Первое, что нужно сделать, это получить копию PAL и следить за веб-сервером и базой данных, чтобы увидеть, что он вам говорит.
Также запускайте SQL-запросы для диагностики самых дорогих и частых запросов.
Измерьте время фактической генерации страниц и проследите его по стеку, чтобы увидеть, какие звонки выполняются, а какие дороги и могут быть кэшированы.
Вместо кэширования вывода я обычно представлял бы слой кэширования перед веб-серверами и слой кэширования между сервером приложений и БД, но без измерения очень трудно судить.
Если вы хотите узнать больше о кэшировании в целом, я бы прочитал этот ответ, который я недавно написал Как начать работу с веб-кэшированием, CDN и прокси-серверами?