碰到一个 Flask 部署后的奇葩问题,求解决办法。

2017-07-21 21:35:08 +08:00
 coolair
部署用的 Gunicorn 18.0 和 eventlet 0.20.1。
问题来了:
如果用 eventlet,则在 Chrome 浏览器里直接打开的 make_response 生成的 PDF 文件预览没问题,下载只能下载部分数据,不能下载整个完整的 PDF。
Chrome 在加载完整个 PDF 预览后,点击下载按钮,不是直接从缓存下载的 PDF 么,为什么预览没有问题,下载却下载不完整呢?在 Edge 和 Firefox 中测试都可以完整下载。

但是,如果不使用 eventlet,Chrome 也是可以完整下载的。

这到底是为啥?查看了 Nginx 的 access 日志,Chrome 点击 pdf 上的下载按钮,并没有再访问服务器啊。
953 次点击
所在节点    问与答
2 条回复
sivacohan
2017-07-23 07:05:11 +08:00
Wireshark 抓下包吧,看一下 chrome 在浏览和下载 PDF 的时候所发请求 header 部分有什么不同。再和 Firefox 的 header 比较一下。
我猜问题出在 PDF.js 和 server 端 chuck encoding 这块了
julyclyde
2017-07-24 06:48:42 +08:00
chrome 不是从缓存下载的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/377096

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX