基于Spring的Web应用程序中的分块HTTP响应

时间:2011-11-15 07:29:22

标签: java performance spring http http-streaming

我们正在Java中的Spring框架上构建一个框架。我们希望能够添加对HTTP Chunked Responses的支持。 Spring有这个API吗?

我们试图实现的基本上是在准备好其余响应之前发送HTML <head>部分。这样客户端就可以开始下载样式表/ js等了。

如果有办法查看客户端是否支持HTTP Chunked Responses会更好。

3 个答案:

答案 0 :(得分:1)

RFC2616指定TE: trailers标头,它是客户端接受分块传输的显式语句,但我从未见过浏览器或设备实际发送此信息。发送HTTP / 1.1请求的任何设备都应接受分块传输。

根据我的经验,只要您没有指定内容长度,Spring就会自动执行分块传输。我的经验主要是使用Spring控制器,所以YMMV使用JSP。

答案 1 :(得分:0)

HTTP是第7层(/ OSI模型)/ 5层(TCP / IP模型)协议。并且给定的应用程序框架在其上或之上运行。

因此,给定的HTTP(get / POST)/ pipelined请求实质上是使用客户端框架打开的TCP管道。

在服务器端,通常您可以处理流水线请求(在一个TCP管道中有多个get / post请求)。

根据您的要求,您希望将给定的请求拆分为2个子请求,可能是通过建立新的TCP管道来承载请求的前半部分和后半部分。

现在的挑战是,即使您的客户端实现了这一点,服务器端也应该接受这样的拆分请求。通常,服务器端会丢弃格式错误的HTTP请求。

答案 2 :(得分:0)

尝试使用Apache Tiles作为布局管理器。您可以在页面的不同图块上设置flush属性,据我所知,刷新图块会刷新响应。

顺便问一下,你不使用压缩机制,例如容器前面的Apache httpd甚至gzip servlet过滤器?如果是这种情况,Apache Tiles将无法帮助您,您最好忘记自己的需求。