Кэширование изображений на стороне клиента - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть обработчик http, который извлекает изображения из файловой системы на сервере.Мне нужно кэшировать эти изображения на стороне клиента (браузер).Для этого я делаю следующий код

        context.Response.Clear()
        context.Response.ClearHeaders()
        context.Response.ClearContent()
        Dim ImageCacheExpiry = ConfigurationManager.AppSettings("ImageCacheExpiryDuration")
        context.Response.Cache.SetCacheability(HttpCacheability.Private)
        context.Response.Cache.SetExpires(DateTime.Now.AddHours(ImageCacheExpiry))
        context.Response.Cache.VaryByParams(DisplayImage.FileName) = True
        context.Response.Cache.SetLastModified(DisplayImage.DateModified)
        context.Response.AddHeader("Content-Disposition", "inline; filename=" & DisplayImage.FileName)
        context.Response.ContentType = DisplayImage.MimeType
        context.Response.BinaryWrite(DisplayImage.ImageBytes)
        context.Response.Flush()
        context.Response.Close()
        context.Response.End()
   'DisplayImage is the object that is having all the data of images like
   'DisplayImage.Filename, DisplayImage.FilePathandName, DisplayImage.MimeType etc

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

PS: Не могу сделать кэширование разметки для всех страниц моего приложения.

Заранее большое спасибо ....

1 Ответ

0 голосов
/ 25 февраля 2011

В зависимости от настроек браузера и браузера, ваш браузер может отправлять запрос If-Modified-Since, чтобы проверить, не устарели ли кэшированные данные.Вы должны использовать что-то вроде Fiddler , чтобы точно выяснить, что отправляет ваш браузер (и ваш сервер возвращается).Возможно, вам придется обработать это и вернуть заголовок 304 (не измененный).

...