在HTTPHandlers URLS上缓存

时间:2013-01-28 05:17:38

标签: asp.net caching httphandler prettyphoto http-caching

我正在ASP.NET中构建一个基于AJAX的prettyphoto库。

我所做的是显示一组缩略图,同时点击每个缩略图我发布了一个AJAX请求,根据缩略图,我得到了一些URL并显示了漂亮照片库。一切都很好。但

让我解释一下。

Thumbnail1       Thumbnail2         Thumbnail3
Thumbnail4       Thumbnail5         Thumbnail6
Thumbnail7       Thumbnail8         Thumbnail9
....

当我们点击Thumbnail1时,它会发布一个AJAX请求,并获得一些这样的网址。

"../GalleryHandler.ashx?id=0"
"../GalleryHandler.ashx?id=1"
"../GalleryHandler.ashx?id=2"
"../GalleryHandler.ashx?id=3"
"../GalleryHandler.ashx?id=4"

我根据点击的缩略图和id对GallerHandler.ashx进行一些检查,并将相应的图像作为webservice的输出。问题是如果我单击Thumbnail2并返回一些这样的URL,例如

"../GalleryHandler.ashx?id=0"
"../GalleryHandler.ashx?id=1"
"../GalleryHandler.ashx?id=2"
"../GalleryHandler.ashx?id=3"
"../GalleryHandler.ashx?id=4"
"../GalleryHandler.ashx?id=5"

所以当prettyPhoto图库弹出和显示图库显示从id0到id4的旧图像甚至没有进入ashx页面检查(我放断点并检查)并显示Thumbnail1的旧图像,但对于id5它会进入ashx页面并正确获取新图像。

我尝试在谷歌之后把它放在“ProcessRequest”中。

    context.Response.Clear();
    context.Response.Cache.SetCacheability(HttpCacheability.Public);
    context.Response.Cache.SetExpires(DateTime.MinValue);

但它不会解决问题,但Chrome会正确显示我希望其他浏览器显示的内容,就像我解释的那样。

我是这个httphandler的新手,所以指导我,即使我错了,误解了。感谢。

1 个答案:

答案 0 :(得分:0)

通过向图像链接添加一个额外的参数来解决这个问题,以避免浏览器缓存。

"../GalleryHandler.ashx?id=0&uniqueGalleryID=1"
"../GalleryHandler.ashx?id=1&uniqueGalleryID=1"
"../GalleryHandler.ashx?id=2&uniqueGalleryID=1"
"../GalleryHandler.ashx?id=3&uniqueGalleryID=1"
"../GalleryHandler.ashx?id=4&uniqueGalleryID=1"