客户端的图像缓存

时间:2011-02-24 19:54:12

标签: c# vb.net caching client-side

我有一个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

这件事发生的事情是......当我在标签之间切换时,它从缓存中取出...但是当我点击浏览器刷新按钮时它再次进入服务器上的文件系统...请告诉我如何在客户端缓存这些图像。

P.S:无法在我的应用程序中对所有页面进行标记缓存。

提前多多感谢....

1 个答案:

答案 0 :(得分:0)

根据浏览器和浏览器设置,您的浏览器可能正在发送If-Modified-Since请求以查看缓存的数据是否过时。您应该使用类似Fiddler的内容来确定您的浏览器正在发送的内容(以及您的服务器返回)。您可能需要处理此问题,并返回304(未修改)标题。