隨筆 - 0, 文章 - 264, 評論 - 170, 引用 - 0

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿(6)

          隨筆分類

          文章分類

          文章檔案

          AI

          android+移動開發

          apache等開源類包,工具相關

          cdn

          concurrent

          C語言

          git、svn等工具使用

          groovy、grails

          Hadoop、Storm、Spark大數據相關

          hibernate、JPA等持久化技術

          html,dom,js,css、ext、mui等前端、移動前端相關

          HTTP、HTTPS、TCP、UDP等協議相關

          IM、openfire

          Java基礎

          java性能優化

          jquery

          linux相關

          lucene、solr等搜索技術相關

          maven gradle ant Jenkins自動化構建與持續集成

          memcache

          mongodb

          nginx、squid、haproxy、varnish

          OLAP

          python、shell、perl、php

          redis

          rmi相關

          spring

          struts、webwork

          tcp/ip

          tomcat,jsp,servlet相關

          velocity等實用工具相關

          業務相關

          互聯網安全、過濾、網絡

          修煉

          其他

          區塊鏈

          壓力、性能測試相關

          地圖相關

          基礎

          多線程

          開發工具相關

          數據庫

          架構

          移動互聯網

          設計模式

          搜索

          •  

          最新評論

          http返回頭中content-length與Transfer-Encoding: chunked的問題釋疑

          先說說問題出現的背景:
                  公司服務器與手機客戶端交互,客戶端請求一個動態生成的XML文件,在用firebug查看http響應頭的時候,有時候發現有content-length屬性,有時候沒有這個屬性,取而代之的是Transfer-Encoding: chunked屬性。由于客戶端強制要求,服務器端必須返回content-length,否則,客戶端將不予解析。于是測試發現,當XML文件很小的時候,是有content-length屬性的,到達一個值時,就成了Tansfer-Encoding:chunked。

          再引用一段話,解釋一下Transfer-Encoding:chunked這個屬性的意義:
                  通常,HTTP協議中使用Content-Length這個頭來告知數據的長度。然后,在數據下行的過程中,Content-Length的方式要預先在服務器中緩存所有數據,然后所有數據再一股腦兒地發給客戶端。
              如果要一邊產生數據,一邊發給客戶端,WEB 服務器就需要使用"Transfer-Encoding: chunked"這樣的方式來代替Content-Length。

          最后說說自己的理解與解決方式:
                  通過種種跡象,我得出的結論是,JSP頁面有一個緩存大小,當輸出數據的長度沒有到達這個大小的時候,服務器是知道總的數據長度的,所以服務器會輸出content-length頭。但如果超過緩存大小,那么,緩存一滿,服務器就得輸出內容給客戶端,所以,不能判斷整個內容的大小,于是返回Transfer-Encoding:chunked這個頭信息。
                  解決方式是:在JSP頁面中加入代碼,response.setBufferSize(402800);40820即400K,其實只要這個值大于你返回的數據的大小就行了。具體設置多少,你可以根據實際情況,合理配置。另外說一句,在page指令中加入buffer="400kb",是不管用的,我測試的情況是這樣。

          posted on 2010-10-28 12:48 小一敗涂地 閱讀(30832) 評論(0)  編輯  收藏 所屬分類: http相關

          主站蜘蛛池模板: 改则县| 库尔勒市| 云和县| 德庆县| 清新县| 丰城市| 景谷| 石城县| 大庆市| 开化县| 永新县| 南漳县| 普洱| 日喀则市| 维西| 祁连县| 外汇| 昆明市| 获嘉县| 宣威市| 信丰县| 扶余县| 永平县| 东安县| 漾濞| 措勤县| 万载县| 山阳县| 平阴县| 昂仁县| 英山县| 万荣县| 甘孜县| 青田县| 济源市| 祁东县| 资源县| 江津市| 平乐县| 盐亭县| 石屏县|