Use o memcache (d) para armazenar em cache o resultado de consultas comuns e, em primeiro lugar, procurar resultados no memcache, é muito mais rápido do que fazer pesquisas repetidas em um banco de dados.
Você precisará reescrever parte de sua lógica para ter um tipo de algoritmo "se o valor não estiver no memcache, faça a consulta e armazene os dados no sistema de cache".
Considere também usar um proxy reverso para armazenar páginas, fragmentos e imagens geradas. Carregue imagens e mídia de um domínio separado sem cookies, a partir de um servidor executando algo que possa ser exibido mais rapidamente que o apache. Nginx e lighttpd são boas opções para servidores de mídia.