1

我目前正在 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

4

1 回答 1

1

不幸的是,这是 Liferay 的一个问题。搜索 Liferay 错误跟踪器,我发现了LPS-29323,其描述与您的描述相符。

幸运的是,修复似乎很简单。

您可以查看修复问题的拉取请求或将这些行添加到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>
于 2013-02-04T18:14:53.457 回答