如何防止pdf缓存所有浏览器?

时间:2014-09-12 14:56:26

标签: asp.net-mvc-3 pdf caching http-headers outputcache

即使在所有浏览器的导航栏上填写了物理路径,它也会显示一个缓存文件。

问题(大字母,因为它对我们来说是一个很大的问题)是我已经通过远程连接清除了客户端浏览器缓存而且我已经在服务器应用程序池上应用了一个回收,但我仍然面对同样的老问题:/有人面对类似的事情吗?

以下列表包括迄今为止尚未解决问题的操作:

01 - 响应标题:

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");

Ps。:我是 MCSD - Web应用程序但是在我解决这个“简单”问题之前不要告诉任何人。谢谢;)

0 个答案:

没有答案