查看我们的 Apache 访问日志时,当用户从我们的服务器下载 PDF 文件时,经常(但并非总是)发生以下情况。首先请求 URL 并以状态 200(正常)和完整回复大小进行传递,然后紧接着是来自同一客户端的对同一 URL 的大量请求,回复大小较小,状态代码为 206(部分回复)。
换句话说,一些客户端首先成功下载了整个 PDF,然后似乎再次下载了文件的大量“块”。
为什么我们会看到这种情况?
答案1
这些是“字节范围”请求(HTTP/1.1 功能),通常由 Adobe Reader 浏览器插件发出。
它们旨在支持在浏览器中跟踪链接至理论上 50 MB 的 PDF、获取目录、跟踪目录中的链接至最后一页或两页,然后阅读器下载最后几页,让您立即访问您要查找的内容,并继续在后台下载其余的 PDF。
一些 Adobe Reader 版本将其称为“快速网页视图”。
我不确定为什么您会首先看到具有完整文件大小的完整请求,所以我不确定我是否已经令人满意地回答了您的问题。
根据我的直觉,我找到了一些进一步的阅读材料,这些材料似乎证实了浏览器对文件的原始 HTTP 请求在移交给 Adobe 插件后通常会在后台继续。该插件会发出各种字节范围请求,但浏览器的原始请求最终会针对文件的完整大小,因为它一开始就不是字节范围请求。
我不确定 Adobe 是否会将此视为错误。它实际上可以使传输的数据增加一倍,但它可以使客户端的“用户体验”看起来“更快/响应更快”。:)