Open-Source World

          let's learn and study.
          posts - 28, comments - 23, trackbacks - 0, articles - 1

          傳統的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
          web.xml中的配置

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

           

          測試prototype.js是否正常的代碼

          代碼
          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


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 吉木乃县| 巴林左旗| 高阳县| 大田县| 宝鸡市| 孝昌县| 平果县| 库尔勒市| 博客| 新巴尔虎右旗| 新营市| 天气| 伊宁市| 平遥县| 永康市| 北辰区| 昔阳县| 金平| 两当县| 徐汇区| 青海省| 平顶山市| 阳朔县| 辽宁省| 横山县| 景德镇市| 阿勒泰市| 靖西县| 中西区| 富阳市| 霸州市| 芦溪县| 张家川| 广德县| 色达县| 拉萨市| 特克斯县| 体育| 新和县| 青海省| 巴塘县|