.htaccess 更改PDF缓存速率或在新窗口中下载与打开PDF的解决方案?

.htaccess 更改PDF缓存速率或在新窗口中下载与打开PDF的解决方案?,.htaccess,caching,pdf,browser-cache,.htaccess,Caching,Pdf,Browser Cache,我在这里做了很多搜索,并应用了上面提到的一些方法,但没有任何运气 我的问题是我管理的一个站点,客户端每周上传一个相同文件名下的新PDF。问题是人们试图下载这个,很多人抱怨它在过去几周加载了PDF。这是因为浏览器缓存,因为当我告诉他们清除缓存时,一切都正常 我有两种可能的解决办法: 1) 强制下载PDF文件,而不是在新窗口中打开。现在我已经尝试了各种各样的htaccess调整,但似乎没有一个在IE9或Safari上起作用 2) 以某种方式更改缓存速率,使PDF文件的缓存速率仅持续一分钟,我不知道如

我在这里做了很多搜索,并应用了上面提到的一些方法,但没有任何运气

我的问题是我管理的一个站点,客户端每周上传一个相同文件名下的新PDF。问题是人们试图下载这个,很多人抱怨它在过去几周加载了PDF。这是因为浏览器缓存,因为当我告诉他们清除缓存时,一切都正常

我有两种可能的解决办法:

1) 强制下载PDF文件,而不是在新窗口中打开。现在我已经尝试了各种各样的htaccess调整,但似乎没有一个在IE9或Safari上起作用

2) 以某种方式更改缓存速率,使PDF文件的缓存速率仅持续一分钟,我不知道如何做到这一点,或者这是否可能

除了每次链接文件名这一显而易见的方法之外,还有人有什么解决方案吗?我们不这样做的原因是她想自己上传PDF,而不必担心编辑HTML文件链接

提前感谢,,
Matt

您可以使用
FilesMatch
容器和
mod_头
来防止所有浏览器、客户端和代理中的缓存:

<FilesMatch ".pdf$">
    FileETag None
    <IfModule mod_headers.c>
        Header unset ETag
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "Thu, 1 Jan 1970 05:00:00 GMT"
    </IfModule>
</FilesMatch>

FileTag无
标题未设置ETag
标题集缓存控制“最大年龄=0,无缓存,无存储,必须重新验证”
标题集Pragma“无缓存”
标题集过期“1970年1月1日星期四05:00:00 GMT”

是否添加缓存buster查询字符串<代码>http://example.com/whatever.pdf?random_value_here。PDF将忽略查询字符串,浏览器每次都会认为它是一个“新”url,完全跳过缓存。如果需要,可以在文档加载时通过javascript简单地添加cache buster值。我们通常将其路径保存在数据库中。我们有两列-一列是服务器名,一列是客户端名。客户端名称可以始终相同,但服务器名称始终是唯一的(通常基于日期)。因此,您从带有服务器名称的页面打开pdf,然后将其名称更改为用户的客户端名称。@MarcB很有趣,但如果随机值保持不变,最终不会出现相同的问题吗?问题是客户端不想进入HTML文件来更改链接,只需要继续重新加载PDF。因此使用JS来完成。e、 g.
document.getElementById('pdflink')。将_cache_buster_添加到_href()之类的东西。@MarcB这个想法很有道理,但我仍然不确定如何使用它,有你知道的教程吗?这个网站在HMTL中。非常基本的网站。在将上述代码添加到我的htacess时,我还收到一个“内部服务器错误500”。真奇怪-我的测试服务器上没有收到错误。。。之所以这样做,是因为服务器不支持
FilesMatch
容器,这本不应该是这样的(我从来没有听说过这样的问题)。它现在起作用了,我在.htaccess顶部的其余内容之前添加了它,现在很好:),而且它每次都提供新的副本吗?显然不是,他们试图更新一些其他PDF,但没有成功,他们一直看到旧版本?!还有其他想法吗?他们在IE上。谢谢@mike anthony