我正在从blobstore提供PDF,我已经添加了对范围请求的支持。在第一个回复客户端的响应中,我只需设置以下标题:
resp.setHeader(“X-AppEngine-BlobKey”,blobkey);
resp.setHeader(“Accept-Ranges”,“bytes”);
预期的行为是客户端将收到这些标头,然后询问我的应用程序随后将通过以下请求处理的特定范围:
resp.setHeader(“X-AppEngine-BlobRange”,范围);
blobstoreService.serve(blobKey,resp);
这在开发环境中完美运行。不幸的是,当它被部署到GAE并且正在使用快速连接时,GAE切换到Chunked Transfer Encoding并且永远不会发生附加请求。在慢速连接上,它不会切换到分块传输编码,因此按预期工作。我的用于显示PDF的客户端似乎不支持呈现初始页面,直到使用Chunked Transfer Encoding时传输整个文件。因此,我真的更愿意强制GAE使用我在应用程序中指定的范围请求。有没有人知道如何实现这一点以及为什么快速连接会自动将应用程序代码中指定的预期行为从范围请求更改为分块传输编码?