http返回頭中content-length與Transfer-Encoding: chunked的問題釋疑
先說說問題出現(xiàn)的背景:
公司服務(wù)器與手機客戶端交互,客戶端請求一個動態(tài)生成的XML文件,在用firebug查看http響應(yīng)頭的時候,有時候發(fā)現(xiàn)有content-length屬性,有時候沒有這個屬性,取而代之的是Transfer-Encoding: chunked屬性。由于客戶端強制要求,服務(wù)器端必須返回content-length,否則,客戶端將不予解析。于是測試發(fā)現(xiàn),當XML文件很小的時候,是有content-length屬性的,到達一個值時,就成了Tansfer-Encoding:chunked。
再引用一段話,解釋一下Transfer-Encoding:chunked這個屬性的意義:
通常,HTTP協(xié)議中使用Content-Length這個頭來告知數(shù)據(jù)的長度。然后,在數(shù)據(jù)下行的過程中,Content-Length的方式要預(yù)先在服務(wù)器中緩存所有數(shù)據(jù),然后所有數(shù)據(jù)再一股腦兒地發(fā)給客戶端。
如果要一邊產(chǎn)生數(shù)據(jù),一邊發(fā)給客戶端,WEB 服務(wù)器就需要使用"Transfer-Encoding: chunked"這樣的方式來代替Content-Length。
最后說說自己的理解與解決方式:
通過種種跡象,我得出的結(jié)論是,JSP頁面有一個緩存大小,當輸出數(shù)據(jù)的長度沒有到達這個大小的時候,服務(wù)器是知道總的數(shù)據(jù)長度的,所以服務(wù)器會輸出content-length頭。但如果超過緩存大小,那么,緩存一滿,服務(wù)器就得輸出內(nèi)容給客戶端,所以,不能判斷整個內(nèi)容的大小,于是返回Transfer-Encoding:chunked這個頭信息。
解決方式是:在JSP頁面中加入代碼,response.setBufferSize(402800);40820即400K,其實只要這個值大于你返回的數(shù)據(jù)的大小就行了。具體設(shè)置多少,你可以根據(jù)實際情況,合理配置。另外說一句,在page指令中加入buffer="400kb",是不管用的,我測試的情況是這樣。
公司服務(wù)器與手機客戶端交互,客戶端請求一個動態(tài)生成的XML文件,在用firebug查看http響應(yīng)頭的時候,有時候發(fā)現(xiàn)有content-length屬性,有時候沒有這個屬性,取而代之的是Transfer-Encoding: chunked屬性。由于客戶端強制要求,服務(wù)器端必須返回content-length,否則,客戶端將不予解析。于是測試發(fā)現(xiàn),當XML文件很小的時候,是有content-length屬性的,到達一個值時,就成了Tansfer-Encoding:chunked。
再引用一段話,解釋一下Transfer-Encoding:chunked這個屬性的意義:
通常,HTTP協(xié)議中使用Content-Length這個頭來告知數(shù)據(jù)的長度。然后,在數(shù)據(jù)下行的過程中,Content-Length的方式要預(yù)先在服務(wù)器中緩存所有數(shù)據(jù),然后所有數(shù)據(jù)再一股腦兒地發(fā)給客戶端。
如果要一邊產(chǎn)生數(shù)據(jù),一邊發(fā)給客戶端,WEB 服務(wù)器就需要使用"Transfer-Encoding: chunked"這樣的方式來代替Content-Length。
最后說說自己的理解與解決方式:
通過種種跡象,我得出的結(jié)論是,JSP頁面有一個緩存大小,當輸出數(shù)據(jù)的長度沒有到達這個大小的時候,服務(wù)器是知道總的數(shù)據(jù)長度的,所以服務(wù)器會輸出content-length頭。但如果超過緩存大小,那么,緩存一滿,服務(wù)器就得輸出內(nèi)容給客戶端,所以,不能判斷整個內(nèi)容的大小,于是返回Transfer-Encoding:chunked這個頭信息。
解決方式是:在JSP頁面中加入代碼,response.setBufferSize(402800);40820即400K,其實只要這個值大于你返回的數(shù)據(jù)的大小就行了。具體設(shè)置多少,你可以根據(jù)實際情況,合理配置。另外說一句,在page指令中加入buffer="400kb",是不管用的,我測試的情況是這樣。
posted on 2010-10-28 12:48 小一敗涂地 閱讀(30843) 評論(0) 編輯 收藏 所屬分類: http相關(guān)