【发布时间】:2017-12-13 19:41:40
【问题描述】:
我使用 mozilla 的 pdf.js 库在我的应用程序中呈现 pdf。它使用相同的字节范围请求。我知道对第一组和最后一组字节的请求首先是出于元数据的目的。但是最后一组字节的范围与 pdf 不同。最后一组字节的范围是如何识别和设置的?第一组字节也是以 200 OK 状态获得的。我想知道为什么是 200 而不是 206 部分内容状态。
【问题讨论】:
我使用 mozilla 的 pdf.js 库在我的应用程序中呈现 pdf。它使用相同的字节范围请求。我知道对第一组和最后一组字节的请求首先是出于元数据的目的。但是最后一组字节的范围与 pdf 不同。最后一组字节的范围是如何识别和设置的?第一组字节也是以 200 OK 状态获得的。我想知道为什么是 200 而不是 206 部分内容状态。
【问题讨论】:
我知道对第一组和最后一组字节的请求首先是出于元数据目的。
它部分不正确:即使它到达外部参照/元数据,它也在加载 PDF 的最后一块。文件在逻辑上被分割成 65536 字节的块(见https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L32)
但最后一组字节的范围与 pdf 不同。
PDF.js 仅加载整个块(为了提高效率),可能除了最后一个不完整的块。因此,对于不同的 PDF 大小,最后一个块大小的范围可能会有所不同。
还以 200 OK 状态获得第一组字节。我想知道为什么是 200 而不是 206 部分内容状态。
取决于您正在谈论的浏览器。对于支持流式传输的浏览器(目前只有 Firefox),PDF.js 除了范围请求外,还会继续获取数据。某些浏览器(Safari 和旧版 Chrome)存在缓存缺陷:它报告缓存文件为 200,即使对于范围范围请求也是如此。
【讨论】: