日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

Java压缩技术(五) GZIP相关——浏览器解析

發布時間:2023/12/3 HTML 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java压缩技术(五) GZIP相关——浏览器解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自? ?Java壓縮技術(五) GZIP相關——瀏覽器解析

GZIP本身就是一種網絡流壓縮算法,而且應用相當廣泛。如果網絡訪問過程中,其數據流較大,勢必降低網絡訪問效率,此時就需要考慮使用壓縮!當然,在瀏覽器與服務器的交互中,要考慮瀏覽器是否支持這些算法,以及服務器運行壓縮所帶來的負載。如果你關注瀏覽器上傳的“Accept-Encoding”屬性,你就能看明白這一點。?

GZIP如何壓縮,我這里就不廢話了,不清楚的朋友請關注(Java壓縮技術(四) GZIP——Java原生實現)?
至于如何使得服務器支持gzip的流輸出,關鍵點只有一行代碼:?

Java代碼
  • response.setHeader("Content-Encoding",?"gzip");??

  • 經過這項設置,瀏覽器就能夠很好的作出響應!?
    先看FireFox,如圖:?
    ?
    再看Opera,如圖:?
    ?
    瀏覽器在打開該頁面時,就可解壓獲得并展示其內容!
    至于IE就慘了,愣是要求下載! ?可能缺少什么設置!(注意后續服務器配置! ?不是無解哦!)?
    ?你不信就這么簡單?上代碼!?
    Java代碼?
  • /**?
  • ?*?2010-4-14?
  • ?*/??
  • import?java.io.ByteArrayOutputStream;??
  • import?java.io.IOException;??
  • import?java.io.OutputStream;??
  • import?java.util.zip.GZIPOutputStream;??
  • ??
  • import?javax.servlet.ServletException;??
  • import?javax.servlet.http.HttpServlet;??
  • import?javax.servlet.http.HttpServletRequest;??
  • import?javax.servlet.http.HttpServletResponse;??
  • ??
  • /**?
  • ?*?GZip服務?
  • ?*??
  • ?*?@author?<a?href="mailto:zlex.dongliang@gmail.com">梁棟</a>?
  • ?*?@since?1.0?
  • ?*/??
  • public?class?GZipServlet?extends?HttpServlet?{??
  • ??
  • ????private?static?final?long?serialVersionUID?=?-4811926975427533081L;??
  • ????private?static?final?String?ENCODING?=?"UTF-8";??
  • ??
  • ????/**?
  • ?????*?壓縮?
  • ?????*??
  • ?????*?@param?data?
  • ?????*?@return?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????private?byte[]?compress(byte[]?data)?throws?Exception?{??
  • ??
  • ????????ByteArrayOutputStream?baos?=?new?ByteArrayOutputStream();??
  • ??
  • ????????//?壓縮??
  • ????????GZIPOutputStream?gos?=?new?GZIPOutputStream(baos);??
  • ??
  • ????????gos.write(data,?0,?data.length);??
  • ??
  • ????????gos.finish();??
  • ??
  • ????????byte[]?output?=?baos.toByteArray();??
  • ??
  • ????????baos.flush();??
  • ????????baos.close();??
  • ??
  • ????????return?output;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?@param?request?
  • ?????*?@param?response?
  • ?????*?@throws?ServletException?
  • ?????*?@throws?IOException?
  • ?????*/??
  • ????private?void?excute(HttpServletRequest?request,?HttpServletResponse?response)??
  • ????????????throws?ServletException,?IOException?{??
  • ??
  • ????????byte[]?data?=?"我是一個中國人!".getBytes(ENCODING);??
  • ??
  • ????????try?{??
  • ????????????byte[]?output?=?compress(data);??
  • ??
  • ????????????//?設置Content-Encoding,這是關鍵點!??
  • ????????????response.setHeader("Content-Encoding",?"gzip");??
  • ????????????//?設置字符集??
  • ????????????response.setCharacterEncoding(ENCODING);??
  • ????????????//?設定輸出流中內容長度??
  • ????????????response.setContentLength(output.length);??
  • ??
  • ????????????OutputStream?out?=?response.getOutputStream();??
  • ????????????out.write(output);??
  • ????????????out.flush();??
  • ????????????out.close();??
  • ????????}?catch?(Exception?e)?{??
  • ????????????e.printStackTrace();??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?@see?HttpServlet#doGet(HttpServletRequest?request,?HttpServletResponse?
  • ?????*??????response)?
  • ?????*/??
  • ????protected?void?doGet(HttpServletRequest?request,??
  • ????????????HttpServletResponse?response)?throws?ServletException,?IOException?{??
  • ????????excute(request,?response);??
  • ????}??
  • ??
  • ????/**?
  • ?????*?@see?HttpServlet#doPost(HttpServletRequest?request,?HttpServletResponse?
  • ?????*??????response)?
  • ?????*/??
  • ????protected?void?doPost(HttpServletRequest?request,??
  • ????????????HttpServletResponse?response)?throws?ServletException,?IOException?{??
  • ????????excute(request,?response);??
  • ????}??
  • ??
  • }??

  • 其實,就這些內容! ?
    當然,除了上述代碼方式,針對于tomcat可以通過修改配置獲得支持!
    Xml代碼?
  • <Connector???
  • ??????????????port="8080"???
  • ??????????????protocol="HTTP/1.1"??
  • ??????????????connectionTimeout="20000"??
  • ??????????????redirectPort="443"???
  • ??????????????URIEncoding="UTF-8"??
  • ??????????????compression="on"?????
  • ??????????????noCompressionUserAgents="gozilla,?traviata"?????
  • ??????????????compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json"???
  • />????

  • 說說配置細節:?
    compression="on"?? 開啟壓縮支持 ?
    noCompressionUserAgents="gozilla, traviata"?? 不壓縮的內容 ?
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json" 壓縮的類型 ?
    至于代碼,你無需寫一行代碼!輕松獲得服務器訪問加速! ? 并且IE也支持哦! ?
    借網友經驗,如下實現,輕松獲得IE支持:?
    Java代碼??
  • response.setContentType("text/plain;charset=utf-8");? ?

    • gzipServer.rar?(5.6 KB)
    • 下載次數: 452

    總結

    以上是生活随笔為你收集整理的Java压缩技术(五) GZIP相关——浏览器解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。