2011-11-15 311 views
2

我們正在Java的Spring框架之上構建一個框架。我們希望能夠添加對HTTP分塊響應的支持。春天有這個API嗎?基於Spring的Web應用程序中的Chunk HTTP響應

我們試圖實現的基本上是在準備好其餘響應之前發送HTML <head>部分。以便客戶端可以開始下載樣式表/ js等。

如果有辦法查看客戶端是否支持HTTP分塊響應會更好。

+0

什麼是您的servlet容器和什麼是您的視圖技術? (jsp,velocity等) – Bozho

+0

它使用JSP作爲View Componenents,並作爲應用程序服務器在Geronimo中運行。 –

回答

0

HTTP是第7層(/ OSI模型)/ 5層(TCP/IP模型)協議。一個給定的應用程序框架運行在其上或頂部。

因此,給定的HTTP(get/POST)/流水線請求本質上是使用客戶端框架打開的TCP管道。

在服務器端,通常您可以處理流水線請求(一個TCP管道中有多個get/post請求)。

在您的要求中,您希望通過建立一個新的TCP管道來將請求分成兩個子請求,以便執行請求的上半部分和下半部分。

現在我們面臨的挑戰是,即使您的客戶端實現了這一點,服務器端也應該接受這樣的分割請求。通常,服務器端會丟棄畸形的HTTP請求。

0

嘗試使用Apache Tiles作爲佈局管理器。你可以在你的頁面的不同圖塊上設置flush屬性,並且據我所知,刷新一個圖塊是爲了響應。

順便說一下,你不使用壓縮機制,例如你的容器前的Apache httpd甚至是gzip servlet過濾器?如果是這種情況,Apache Tiles不會幫助你,而且最好忘記你的需求。

+0

使用Apache Tiles是不可能的,因爲這個應用程序已經開發完畢,並且有成千上萬行JSP代碼。 –

1

RFC2616指定一個TE: trailers標題,它是客戶端接受分塊傳輸的明確聲明,但我從未見過瀏覽器或設備實際發送此消息。任何發送HTTP/1.1請求的設備都應接受分塊傳輸。

根據我的經驗,只要不指定內容長度,Spring將自動執行分塊傳輸。我的經驗主要是使用Spring控制器,所以YMMV使用JSP。

+0

不,'TE:trailers'不表示接受分塊編碼。它表示在分塊數據的「預告片」中接受額外的標題。 RFC說_'All HTTP/1.1應用程序必須能夠接收和解碼「分塊」傳輸編碼_。 –

相關問題