【发布时间】:2013-04-02 21:54:37
【问题描述】:
我在这里做了很多搜索,并应用了一些提到的方法,但没有任何运气。
我的问题是我管理的一个网站,客户每周都会以相同的文件名上传一个新的 PDF。问题是人们试图下载这个,很多人抱怨它加载了过去几周的 PDF。这是由于浏览器缓存,因为当我告诉他们清除缓存时一切正常。
我有两种可能的解决方案:
1) 强制下载 PDF 文件,而不是在新窗口中打开。现在我已经尝试了各种 htaccess 调整,但似乎都无法在 IE9 或 Safari 上运行。
2) 以某种方式更改缓存率,以便 PDF 文件的缓存率仅持续一分钟,我不知道如何做到这一点,甚至是否可能?
有没有人有任何解决方案,而不是每次都链接文件名?我们不这样做的原因是她想自己上传 PDF,而不必担心编辑 HTML 文件链接。
提前致谢, 马特
【问题讨论】:
-
添加缓存清除查询字符串?
http://example.com/whatever.pdf?random_value_here。 PDF 将忽略查询字符串,浏览器每次都会认为它是一个“新”url,完全跳过缓存。如果需要,可以在文档加载时通过 javascript 轻松添加 cache-buster 值。 -
我们通常将它的路径保存在数据库中。我们有 2 列 - 一列用于服务器名称,一列用于客户端名称。客户端名称可以始终相同,但服务器名称始终是唯一的(通常基于日期)。因此,您从带有服务器名称的页面打开 pdf,然后将其名称更改为用户的客户端名称。
-
@MarcB 很有趣,但如果随机值保持不变,最终不会出现同样的问题吗?问题是客户不想进入 HTML 文件来更改链接,只是继续重新上传 PDF。
-
因此使用 JS 来完成。例如
<a id="pdflink" href="yourfile.pdf">click</a><script>document.getElementById('pdflink').add_cache_buster_to_href();</script>之类的。 -
@MarcB 这很有道理,这个想法,但我仍然不确定如何使用它,有没有你知道的教程?
标签: .htaccess caching pdf browser-cache