使ASP.NET/IIS无法缓存PDF文件的正确方法

GR7*_*GR7 9 asp.net iis caching iis-6 browser-cache

我有以下场景,我想知道什么是处理这个问题的最佳方法.我的Web应用程序(ASP.NET 2.0/IIS 6)生成PDF文件,我有一个结果页面,其中包含指向这些PDF的链接.

现在,我注意到,如果我访问结果页面,单击PDF文件(它将在新窗口中打开),然后重新生成PDF文件,然后单击结果页面中的相同链接,将显示OLD PDF而不是新的.我不得不删除临时的互联网文件,以便查看新的.

因此,由于我不提供实际编写PDF的ASPX(我不希望显示"保存"对话框),而是直接链接到PDF文件,我想知道确保用户始终确保用户的最佳方法看到服务器中的最新文件,而不是缓存版本.

我猜测添加无缓存标头是不可能的.但PDF请求仍然会通过HTTP处理程序,所以我想知道我是否应该创建一个特定的HTTP处理程序来拦截PDF的请求,或者我是否应该在IIS级别执行此操作...但是我不一定希望避免在该网站上缓存所有PDF文件.

有什么建议?在此先感谢您的帮助.

Nei*_*son 12

如果您的pdf文档链接附加了一个唯一的查询字符串,我相信这会阻止缓存.时间刻度是一个很好的使用,例如:

string.Format("{0}?t={1}", pdfFileUrl, DateTime.Now.Ticks);
Run Code Online (Sandbox Code Playgroud)


小智 5

我只是有一个类似的问题。我的页面允许用户输入数据并生成新的pdf文件保存并单击。新的pdf文件将覆盖旧的pdf文件。在IE8中,当用户单击“保存”后的pdf链接时,将始终显示旧的pdf(用户需要清除缓存以显示新的pdf)。经过数小时的搜索,我发现在IIS6中,转到“输出缓存”,添加文件扩展名为“ .aspx”的新缓存规则,同时选中“用户模式缓存”和“内核模式缓存”,然后在两个选项下都打钩。 ,选择“防止所有缓存”。这对我有用!