Por que você precisa disso quando o IIS - na verdade o Windows - tem um cache de saída já incluído no kernel (o http.sys pode fazer o cache)? Existe uma necessidade real ou você não tem conhecimento do IIS e da funcionalidade de cache de saída do ASP.NET?
A documentação:
é um bom começo. Você pode armazenar em cache, invalidar por parâmetro, fazer cache parcial em uma página (ou seja, apenas as partes que não mudam). Está tudo lá fora da caixa.
Eu nunca vi uma necessidade de cache adicional externo, mas talvez haja algo especial que você precisa que o ASP.NET e o IIS ainda não façam.