我目前正在 Liferay 服务器上进行开发。
[liferay-portal-6.1.10-ee-ga1 + tomcat-7.0.25]
在某些情况下,我的用户从 Document-Library 下载文件。
当他们使用以下类型的 url 这样做时会发生什么
[$LIFERAY_HOST]/c/document_library/get_file?uuid=[$OBNOXIOUSLY_LONG_UUID]&groupId=[$MY_GROUP_ID]
文件下载需要很长时间才能结束。
事实上,下载本身并不需要比所需时间更多的时间。但似乎没有关闭响应。
大多数下载客户端(包括 Firefox、wget、wireshark ...)似乎都没有注意到响应结束。
结果是他们挂了没有真正的充分理由。
最糟糕的是,我的 Firefox 用户的印象是,他们的下载对于非常小的文件需要很长时间(例如 8kb 需要 20 秒……据说,这是正确的,这是不可接受的)。
我试图挖掘我的堆栈并查看 liferay 的资源,但我无法弄清楚延迟来自哪里。
我试图查看这个线程的方式(看起来很有希望)https://www.liferay.com/community/forums/-/message_boards/message/11838689
但这不适用于我的问题。我已经强制所有过滤器类吐出日志消息,它们似乎都在几毫秒内执行(最多一秒钟)。
我试图检查 httpservletrequest 的输出流刷新和关闭,它们都被正确而干净地执行了......我开始对自己失去希望和信心......我很难过,我觉得很脏,我需要咖啡......帮助我……求你了!
----编辑:回答----
事实上,我的问题与 GZip 过滤器有关(在某种程度上我在第一次尝试时没有发现。在我的确切版本上,rp 的答案不是实际的解决方案,但它是在很多接近的版本上。如果你遇到同样的问题,broxse rp的答案(在下面)或这个:
www.liferay.com/community/forums/-/message_boards/message/21186157#_19_message_21215343