Por que o If-Modified-Since não funciona, acho que você deve postar as partes relevantes da sua configuração (Suponho que você tenha reiniciado o Apache). Você também pode querer analisar rapidamente os logs para ver se o mesmo IP (possivelmente o mesmo usuário) obtém esse arquivo XML várias vezes. Se sempre ou principalmente novos usuários, o cache do lado do cliente não ajudará a reduzir a carga no seu servidor.
Para a compressão, você quer olhar para mod_deflate e / ou mod_gzip . Aqui é uma comparação mais antiga do Linux Journal.
Para o cache de memória, acho que, se for acessado o suficiente para valer o cache, o sistema operacional provavelmente já estará armazenando o cache. Se você não tiver problemas de E / S ou latência ruim no arquivo, eu confiaria no sistema operacional para fazer seu trabalho.