badqiu

          XPer
          隨筆 - 46, 文章 - 3, 評論 - 195, 引用 - 0
          數據加載中……

          關于JavaScript的gzip靜態壓縮方法

          傳統的JS壓縮(刪除注釋,刪除多余空格等)提供的壓縮率有時還是不盡不意,幸虧現在的瀏覽器都支持壓縮傳輸(通過設置http header的Content-Encoding=gzip),可以通過服務器的配置(如apache)為你的js提供壓縮傳輸,或是appfuse中使用的GZipFilter使tomcat也提供這種能力

          現在的問題是這種動態的壓縮會導致CPU占用率過高,現在我想到的解決辨法是通過提供靜態壓縮(就是將js預先通過gzip.exe壓縮好)

          一.下面描述在tomcat中的應用

          1.將prototype.js通過gzip.exe壓縮保存成prototype.gzjs
          2.設置header,我編寫了一個簡單的AddHeadersFilter來將所有以gzjs結尾的文件增加設置header Content-Encoding=gzip

          ?1????web.xml中的配置
          ?2?????<filter>
          ?3?????????<filter-name>AddHeaderFilter</filter-name>
          ?4?????????<filter-class>
          ?5?????????????badqiu.web.filter.AddHeaderFilter
          ?6?????????</filter-class>
          ?7?????????<init-param>
          ?8?????????????<param-name>headers</param-name>
          ?9?????????????<param-value>Content-Encoding=gzip</param-value>
          10?????????</init-param>
          11?????</filter>
          12?
          13?????<filter-mapping>
          14?????????<filter-name>AddHeaderFilter</filter-name>
          15?????????<url-pattern>*.gzjs</url-pattern>
          16?????</filter-mapping>

          測試prototype是否正常的代碼

          ?1?<html>
          ?2?<head>
          ?3?<!--?type="text/javascript"不可少,有些瀏覽器缺少這個不能運行,具體已經忘記了?-->
          ?4?<script?src="prototype.gzjs"?type="text/javascript"></script>
          ?5?</head>
          ?6?<body>
          ?7?????<input?id="username"?name="username"?value="badqiu"/><br?/>
          ?8?????<input?id="email"?value="badqiu@gmail.com"/>
          ?9?<script>
          10?????<!--?測試prototype的方法是否正常-->
          11?????alert($F('username'))
          12?</script>
          13?</body>
          14?</html>


          在Apache httpd中可以直接通過在httpd.conf增加AddEncoding x-gzip .gzjs來映射.gzjs文件的header

          二.相關壓縮率數據
          1. prototype.js 1.5.0_rc0原始大小56KB,未經任何處理直接使用gzip壓縮為12KB,總壓縮率79%
          2. 通過js壓縮工具壓縮過的protytype.js為20KB,使用gzip壓縮為10KB,總壓縮率為83%
          3. 實際項目中的多個js合并成的文件 439KB,直接通過gzip壓縮為85KB,總壓縮率81%
          4. 439KB經過js壓縮為165KB,再經過gzip壓縮為65KB,總壓縮率86%
          基本上你都可以忽略js壓縮工具的壓縮率,直接使用gzip壓縮

          gzip下載地址 http://www.gzip.org
          tomcat的壓縮配置示例下載地址: http://www.aygfsteel.com/Files/badqiu/gziptest.rar

          posted on 2006-12-04 22:48 badqiu 閱讀(2616) 評論(2)  編輯  收藏 所屬分類: AJAX

          評論

          # re: 關于JavaScript的gzip靜態壓縮方法  回復  更多評論   

          試試這個:
          http://www.xidea.org/webstart/JSA.jnlp


          http://www.aygfsteel.com/jindw/archive/2007/06/22/125829.html
          2007-08-01 12:30 | 金大為

          # re: 關于JavaScript的gzip靜態壓縮方法  回復  更多評論   

          我在resin服務器里面按照你寫的這樣寫的,可以處理,完全正常。
          但是如果把resin架到IIS下,就處理不了了,如何解決?
          我郵箱pkjcw@sina.com.cn
          2007-08-18 11:36 | Square.pk
          主站蜘蛛池模板: 柳河县| 乌兰县| 昭平县| 临江市| 昌都县| 华安县| 香格里拉县| 吉隆县| 灵丘县| 万载县| 丹巴县| 昌宁县| 宁河县| 葵青区| 永靖县| 沾益县| 江永县| 南乐县| 朔州市| 桃江县| 苍梧县| 赤壁市| 时尚| 江津市| 凤凰县| 洞头县| 门头沟区| 神农架林区| 河北区| 成武县| 庄浪县| 闻喜县| 遂平县| 巴中市| 泸水县| 巩留县| 乌海市| 台安县| 时尚| 平利县| 永州市|