我有一个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:无法在我的应用程序中对所有页面进行标记缓存。
提前多多感谢....
答案 0 :(得分:0)
根据浏览器和浏览器设置,您的浏览器可能正在发送If-Modified-Since请求以查看缓存的数据是否过时。您应该使用类似Fiddler的内容来确定您的浏览器正在发送的内容(以及您的服务器返回)。您可能需要处理此问题,并返回304(未修改)标题。