我有一个提供图像的wcf服务,这些图像是易变的并且定期更新。我使用img标签在网页上显示它们
<img src="location/map/image/{coordinates}
cordinates是一个例如12786。 在我的javascript中,我在不同的时间创建和删除图像标记。我使用以下代码添加HTTP标头以防止缓存
//whatever the result we will not cache this at the client or intermediate proxies
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
HttpContext.Current.Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1
HttpContext.Current.Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1
//write the image http response
我注意到在firefox中,图像永远不会被刷新,并且会使用虚拟查询字符串参数。我已经明白firefox DOM会注意到之前在同一页面上使用过的图片网址并且不会刷新它。
这似乎完全反对Http(REST),因为无论如何图像都没有链接到文档,而且它是一个单独的HTTP资源,为什么它的可访问性由它所引用的页面/ DOM决定。
这完全违反了HTTP。
我的问题是;有没有办法在使用HTTP的Firefox中阻止这种行为?请不要说Response.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
它在FF上不起作用。
我正在使用FF6。
答案 0 :(得分:1)
尝试添加以下内容:
HttpContext.Current.Response.AppendHeader("Pragma", "no-cache");
HttpContext.Current.Response.AppendHeader("Cache-Control", "no-cache");
HttpContext.Current.Response.CacheControl = "no-cache";
HttpContext.Current.Response.Expires = -1;
HttpContext.Current.response.ExpiresAbsolute = new DateTime(1900, 1, 1);
HttpContext.Current.response.Cache.SetCacheability(HttpCacheability.NoCache);
答案 1 :(得分:0)
好的我需要关闭它,结果是FF需要修复,我会在FF网站上添加一个bug。
感谢所有回答并看过这个问题的人,希望这将有助于将来的一些Google员工。