我目前正在使用Liferay服务器进行开发。
[liferay-portal-6.1.10-ee-ga1 + tomcat-7.0.25]
在某些情况下,我的用户从文档库中下载文件。
当他们使用以下类型的网址
时会发生什么[$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的答案不是实际的解决方案,但它是在很多关闭版本。 如果你遇到同样的问题,请点击rp的答案(下面的)或者这个:
www.liferay.com/community/forums/-/message_boards/message/21186157#_19_message_21215343
答案 0 :(得分:1)
不幸的是,这是Liferay的一个问题。搜索Liferay错误跟踪器后,我发现LPS-29323的描述与您的描述相符。
幸运的是,修复似乎很简单。
您可以查看pull request that fixes the issue或将这些行添加到WEB-INF\liferay-web.xml
<filter-mapping>
<filter-name>ETag Filter</filter-name>
<url-pattern>^(/c/document_library/get_file|/c/message_boards/get_message_attachment|/c/wiki/get_page_attachment)(\?.*)?$</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>