Por que minha imagem personalizada não é armazenada em cache no navegador?

Tenho um manipulador personalizado que está retornando uma imagem para o navegado

As imagens são buscadas em um banco de dado

Por alguma razão, as imagens não estão sendo armazenadas em cache pelo navegador, e eu queria saber se alguém pode identificar o que está faltando no código abaixo:

HttpContext.Current.Response.BinaryWrite(imageBytes);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);
Context.Current.Response.Cache.SetAllowResponseInBrowserHistory(true);
if(imgRepGetCache.DateCached.HasValue)
    HttpContext.Current.Response.Cache.SetLastModified(imgRepGetCache.DateCached.Value);
HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddDays(2));
HttpContext.Current.Response.ContentType = "image/jpeg";

Ou, alternativamente, se eu estiver completamente sem entender o assunto de alguma forma e houver outro lugar em que eu precise procura

Editar Conforme solicitação de mais informações:

A URL é sempre a mesmaEstou testando o carregamento do mesmo arquivo via pipe padrão do IIS e meu pipe no mesmo navegador no mesmo PC. Aquele que carrega através do IIS normalmente é armazenado em cache, meu arquivo não

Edit 2: Depois de inspecionar as solicitações / respostas HTTP na rota normal do IIS, acho que tem algo a ver com o ETag. O ETag (do qual sou novo agora) parece ser uma espécie de soma de verificação para o documento. Em solicitações subsequentes de um navegador, o ETag é enviado e, se o servidor descobrir que o ETag não foi alterado, ele retornará 304 - Não Modificado. Tudo bom! Mas agora estou definindo o ETag usando:

HttpContext.Current.Response.Cache.SetETag(imgRepGetCache.DateCached.ToString());

Mas não aparece na resposta. Mais próximo..

Edit 3: Corrigi-o no final depois de aproveitar o Firebug para me divertir com a inspeção de HTTP. Postei minha solução abaixo.

questionAnswers(6)

yourAnswerToTheQuestion