Asp.net mvc 3 如何防止pdf缓存所有浏览器?
即使在所有浏览器的导航栏上填写了物理路径,它也会显示一个缓存文件 问题是(因为现在对我们来说这是一个大问题),我已经通过远程连接清除了客户端浏览器缓存,并且我也已经在服务器应用程序池上应用了回收,但我仍然面临着同样的老问题:/有人面临类似的问题吗 以下列表包括迄今为止尚未解决问题的操作: 01-响应标题:Asp.net mvc 3 如何防止pdf缓存所有浏览器?,asp.net-mvc-3,pdf,caching,http-headers,outputcache,Asp.net Mvc 3,Pdf,Caching,Http Headers,Outputcache,即使在所有浏览器的导航栏上填写了物理路径,它也会显示一个缓存文件 问题是(因为现在对我们来说这是一个大问题),我已经通过远程连接清除了客户端浏览器缓存,并且我也已经在服务器应用程序池上应用了回收,但我仍然面临着同样的老问题:/有人面临类似的问题吗 以下列表包括迄今为止尚未解决问题的操作: 01-响应标题: protected override void OnActionExecuting(ActionExecutingContext filterContext) { filterCont
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.ClearHeaders();
filterContext.RequestContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.RequestContext.HttpContext.Response.Cache.AppendCacheExtension("no-store, must-revalidate");
filterContext.RequestContext.HttpContext.Response.AppendHeader("Pragma", "no-cache");
filterContext.RequestContext.HttpContext.Response.AppendHeader("Expires", "0");
filterContext.RequestContext.HttpContext.Response.AppendHeader("Last-Modified", "Wed, 08 Jan 2014 15:39:15 GMT");
filterContext.RequestContext.HttpContext.Response.AppendHeader("If-Modified-Since", "Tue, 07 Jan 2014 15:39:15 GMT");
base.OnActionExecuting(filterContext);
}
02-数据注释:
[OutputCache(NoStore = true, Duration = 0, Location = OutputCacheLocation.None, VaryByParam = "none")]
public ActionResult Avaliacao(int id)
{...
}
03-时间戳:
var _contents = memStream.GetBuffer();
memStream.Close();
return File(_contents, "application/pdf",
"RelatorioMensal-" + participante.Numero.GetValueOrDefault().ToString("00000") + "-" +
lote.Id.ToString("0000") + "-" + DateTime.Now.Ticks.ToString() + ".pdf");
04-应用程序池回收
05-IIS上.pdf文件的缓存规则筛选器设置为防止所有缓存
06-输出缓存设置:启用缓存和启用内核缓存未选中以进行测试
07-通过代码清除缓存:
OutputCacheAttribute.ChildActionCache = new MemoryCache("NewDefault");
注:我是一个MCSD-Web应用程序,但在我解决这个“简单”问题之前,不要告诉任何人。谢谢;) 最终由浏览器决定缓存哪些文件,如果缓存了,缓存多长时间。@mkl如果我没有看到客户端浏览器没有请求的缓存.pdf文件,并且不在我们的服务器文件夹中,我可以同意您的意见。这太奇怪了,快把我逼疯了…缓存的.pdf文件不是客户端浏览器请求的,也不在我们的服务器文件夹中-听起来缓存不是你的主要问题,而是向你的客户端注入错误的pdf文件。我不知道@mkl。。。但这就是我通过物理路径执行请求的原因,客户端浏览器向我显示了来自巴西同一地区/城市的另一个客户端的.pdf缓存。@mkl我想与您分享,我们的问题肯定已经解决了。现在,整个站点处于SSL连接下,所有.pdf文件都正确显示。正如你之前所说的,还有一件事是向我们的客户注入虚假的PDF。非常感谢。