Почему в браузере нет кэшированного изображения?

У меня есть собственный обработчик, который возвращает изображение в браузер.

Изображения извлекаются из базы данных.

По какой-то причине изображения не кэшируются браузером, и мне было интересно, сможет ли кто-нибудь определить, что мне не хватает, из приведенного ниже кода:

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";

Или, в качестве альтернативы, если я каким-то образом упускаю суть, и мне нужно искать что-то еще.

Редактировать: Согласно запросу для получения дополнительной информации:

URL всегда один и тот жеЯ тестирую загрузку одного и того же файла через стандартный канал IIS и мой канал в одном браузере на одном компьютере. Тот, который загружается через IIS, обычно кэшируется, мой файл - нет.

Изменить 2: После проверки HTTP-запросов / ответов по обычному маршруту IIS я думаю, что это как-то связано с ETag. ETag (который я новичок на данный момент), кажется, своего рода контрольная сумма для документа. При последующих запросах от браузера ETag отправляется, и если сервер обнаруживает, что ETag не изменился, он возвращает 304 - Not Modified. Все хорошо! Но сейчас я устанавливаю ETag с помощью:

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

Но это не появляется в ответе. Ближе ...

Изменить 3: Я исправил это в конце после использования Firebug для некоторой забавы проверки HTTP. Я разместил свое решение ниже.

Ответы на вопрос(3)

Ваш ответ на вопрос