浏览器缓存可下载文件

时间:2013-12-20 19:33:16

标签: php google-chrome firefox caching

假设我将pdf文件存储在数据库中(不重要)。应用程序的用户定期访问页面以获取存储的PDF并打印它 - 用于粘贴标签btw。

考虑到他们的下载目录会随着时间的推移填写相同文档的副本,我很生气,因为他们每次需要打印标签时都会下载PDF。

有没有办法指示浏览器缓存此文件?或者可能是相对链接到用户文件系统的任何方法?所有用户都将使用Windows 7专业版在Chrome / Firefox上。

3 个答案:

答案 0 :(得分:0)

Etags将帮助您做到这一点。如果自上次下载客户端后文件尚未更新,则服务器将发送304“未修改”的响应,而不是文件。

如果您的文件是动态生成的,则需要在PHP中手动实现etag生成,而不是依赖Web服务器。

http://www.php.net/manual/en/function.http-cache-etag.php

答案 1 :(得分:0)

我找到了解决问题的有效方法。

从我对我的问题的评论中,我们得出结论,最好利用浏览器的内置PDF / DOC渲染器并下载任何其他无法识别的内容。

我读了这个标准:http://tools.ietf.org/html/rfc6266

这是解决方案(标题):

Content-Disposition: inline; filename=something.pdf

我使用“内联”代替附件,以便在必要时使用浏览器。

答案 2 :(得分:-1)

大多数浏览器会根据网址自动执行此操作。如果特定PDF blob的URL是常量,则浏览器不会重新下载它,除非服务器响应它已更改(通过HTTP字段)。

因此,您应该将您的网站设计为每个资源都有“永久链接”。这可以通过在URL字符串中使用某种资源ID来实现。

正如其他人在评论中所说,服务器不能保证客户特别做任何事情;您可以提供的所有建议都是您希望大多数浏览器能够同样对待的建议。