如何在Acrobat Reader 10.0(HTTP 1.0 / HTTP 1.1)中使用PDF流时防止缓存

时间:2011-01-18 13:28:14

标签: caching pdf header acrobat

我试图找到一种方法来阻止浏览器缓存使用流媒体方法加载的PDF。

FireFox和Chorme使用以下标题处理得很好,并且不会缓存任何pdf文件:

Response.AddHeader(“Pragma”,“no-cache,no-store”); Response.AddHeader(“Cache-Control”,“no-cache,no-store,must-revalidate,max-age = 0”); Response.AddHeader(“Expires”,“ - 1”);

虽然IE 7(使用acrobat reader 9.4.1)仅适用于以下标题并阻止PDF文档的缓存:

Response.AddHeader(“Pragma”,“no-cache,no-store”); Response.AddHeader(“Cache-Control”,“private,must-revalidate,max-age = 0”); Response.AddHeader(“Expires”,“ - 1”);

当我尝试在Acrobat Reader 10中使用IE 7时,无论我尝试过什么,上面的标题都没有任何不同并缓存PDF。

当我尝试放置Cache-Control:no-cache,no-store时,根本没有加载pdf。 根据我的理解,IE使用缓存机制来加载PDF文档。

是否有人熟悉全局或特定方式(例如使用其他标题)可以帮助防止缓存PDF文档?

4 个答案:

答案 0 :(得分:7)

在路径或查询字符串中为URL添加随机数。这样,它每次都会下载文件。如果文件已更改,您也可以仅更改数字,例如使用文件的mtime。

PHP(因为每个人都明白,即使没有人喜欢它):

 <a href="document.pdf?buster=<?= time() ?>">Download PDF</a>

答案 1 :(得分:1)

显示使用no-cache标头内联的PDF(和其他文档类型)的问题已作为错误提交给Microsoft:http://support.microsoft.com/kb/316431。 IE在内联读取PDF时使用自己的缓存机制。

不幸的是,M $的人说这“按设计工作”,用户不应该使用no-cache标头......去图。

您可以尝试VSU使用Java PDF阅读器的想法......我也可以采用这种方式。

答案 2 :(得分:0)

控制管道中的缓存设置并非万无一失。另一种方法是在PDF的文件名中对实时和日期进行编码。

答案 3 :(得分:0)

您可以将时间日期编码为PDF的文件名,以便每次发出请求时文件名都是唯一的。

Response.AddHeader "Content-Disposition","attachment;filename=somename" + CurrentDate() + Currenttime() ".pdf"

CurrentDate adn CurrentTime是虚函数。你需要编写那段代码。