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ãoEdit 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.