Não trabalhei com nenhum mecanismo de cache e fiquei imaginando quais são minhas opções no mundo .net para o seguinte cenário.
Basicamente, temos um serviço REST, no qual o usuário passa um ID de uma categoria (pasta think) e essa categoria pode ter muitas subcategorias e cada uma das subcategorias pode ter 1000 contêineres de mídia (objetos de referência do arquivo think) que contêm informações sobre um arquivo que pode estar em um servidor NAS ou SAN (nesse caso, os arquivos são vídeos). O relacionamento entre essas categorias é armazenado em um banco de dados, juntamente com algumas regras de permissão e metadados sobre as subcategorias.
Portanto, da perspectiva da interface do usuário, temos um controle de árvore carregado preguiçosamente, que é conduzido pelo usuário clicando em cada subpasta (pense no Windows Explorer). Depois que eles acessam um URL do arquivo de vídeo, eles podem assistir ao vídeo.
O número de usuários pode crescer até os 1000s e as subcategorias e vídeos podem estar nos 10000s à medida que o sistema cresce.
A questão é: devemos continuar o modo como está funcionando atualmente, onde cada solicitação atinge o banco de dados ou devemos pensar em armazenar em cache os dados?
Estamos usando o IIS 6/7 e o Asp.net.