無憂無鹵

          鳥在籠中,恨關羽不能張飛;人處世上,要八戒更需悟空

          關于javascript 壓縮


          以下轉自 http://blog.csdn.net/lvyuanfang/archive/2007/10/27/1849387.aspx


          用yuicompressor和Ant壓縮Ext的CSS文件

          yuicompressor是YUI的Javascript和CSS壓縮工具,下載地址:http://developer.yahoo.com/yui/compressor/

          使用Ext之后,只能導入ext-all.css或者一個個的導入需要的css(太麻煩),如果用到aero等風格,還得導入xtheme- aero.css,總下載大小為ext-all.css+xtheme-aero.css=58k+16k=76k,如果一個個導入僅用到的css,又要 多次http請求,本來Ext幾百K的大小就讓人擔憂性能,再加上76k的css文件,瀏覽器肯定載入更慢了。。
          Ext自帶的css源文件,除了ext-all.css之外都不是壓縮的。考慮用yuicompressor來壓縮用到的css文件,并用Ant將壓縮過 的css文件合并為一個文件。這里所說的方法同樣可以用于javascript的壓縮,yuicompressor支持對javascrip和css文件 的壓縮。

          <project name="..." default="..." basedir=".">
              ...
              <!-- yuicompressor.jar的引用,使用最新的版本2.2.5 -->
              <property name="yuicompressor" value="tools/yuicompressor-2.2.5.jar" />

              ...
              <!-- 壓縮并連結用到的ext的css文件 -->
              <target name="compress-ext-css">
                  <!--Ext CSS樣式目錄-->
                  <property name="css.ext" value="WebRoot/css/ext" />
                  <!-- 刪除之前生成的已壓縮css文件 -->
                  <delete>
                      <fileset dir="${css.ext}">
                          <include name="*-m.css" />
                          <include name="ext-all.css" />
                      </fileset>
                  </delete>
                  <!-- 使用java命令調用yuicompressor.jar,就是用java命令執行yuicomprossor.jar -->
                  <!-- parallel="false":對fileset中的每個文件都執行一次executable參數的命令 -->
                  <!-- dest="${css.ext}":命令執行目錄 -->
                  <apply executable="java" parallel="false" verbose="true" dest="${css.ext}">
                      <!-- 要壓縮的css文件 -->
                      <fileset dir="${css.ext}">
                          <include name="fonts-min.css" />
                          <include name="reset-min.css" />
                          <include name="core.css" />
                          <include name="tree.css" />
                          <include name="tabs.css" />
                          <include name="toolbar.css" />
                          <include name="button.css" />
                          <include name="basic-dialog.css" />
                          <include name="layout.css" />
                          <include name="xtheme-aero.css" />
                      </fileset>
                      <arg line="-jar" />
                      <arg path="${yuicompressor}" />
                      <arg value="-o" />
                      <targetfile />
                      <!-- 每執行一次命令的輸出文件為*-m.css,比如要壓縮文件為tabs.css,則生成的壓縮文件為tabs-m.css -->
                      <mapper type="glob" from="*.css" to="*-m.css" />
                  </apply>
                  <!-- 以上動作相當于執行下列命令:
                        java -jar yuicompressor-2.2.5.jar -o fonts-min-m.css fonts.css
                        java -jar yuicompressor-2.2.5.jar -o reset-min-m.css reset.css
                        java -jar yuicompressor-2.2.5.jar -o core-m.css core.css
                        java -jar yuicompressor-2.2.5.jar -o tree-m.css tree.css
                        java -jar yuicompressor-2.2.5.jar -o tabs-m.css tabs.css
                        java -jar yuicompressor-2.2.5.jar -o toolbar-m.css toolbar.css
                        java -jar yuicompressor-2.2.5.jar -o basic-dialog-m.css basic-dialog.css
                        java -jar yuicompressor-2.2.5.jar -o layout-m.css layout.css
                        java -jar yuicompressor-2.2.5.jar -o xtheme-aero-m.css xtheme-aero.css
                  -->
                  <!-- 用Ant的concat動作將生成的壓縮css文件連結成一個文件 -->
                  <!-- fixlastline="true":每個壓縮文件在最后生成的文件中用換行來分割,即每個*-m.css在生成的ex-all.css中占一行。如果 用concat連結壓縮的js文件,這個參數一定要加上,否則連結后的js文件可能運行錯誤 -->
                  <concat destfile="${css.ext}/ext-all.css" fixlastline="true">
                      <fileset dir="${css.ext}">
                          <include name="*-m.css" />
                      </fileset>
                  </concat>
              </target>

          </project>

           


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lvyuanfang/archive/2007/10/27/1849387.aspx


          以下轉自 (badqiu)http://badqiu.javaeye.com/blog/37176 

          關于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
          web.xml中的配置
          Java代碼 復制代碼
          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

          posted on 2009-06-10 17:38 beyond 閱讀(855) 評論(0)  編輯  收藏


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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          導航

          <2009年6月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          相冊

          搜索

          最新評論

          • 1.?re: 近期任務
          • 大哥 等著你的drools5翻譯呢 drools4把我搞死了 如果你有關于drools4的心得的話請指教 感覺自己使用的不是很好 望賜教 QQ:53816565 謝謝
          • --sunnidy
          • 2.?re: Mysql遷移到Oracle
          • 不錯,看樣子支持大多數數據庫遷移到oracle,不知道是否支持從oracle轉出?
          • --FastUnit

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 旌德县| 盱眙县| 壤塘县| 南召县| 乳山市| 达拉特旗| 本溪| 南安市| 斗六市| 汉寿县| 区。| 霍林郭勒市| 东山县| 靖安县| 清丰县| 偃师市| 夏津县| 广德县| 青岛市| 沈阳市| 五常市| 平谷区| 重庆市| 台山市| 盐城市| 青龙| 九江县| 阿瓦提县| 同德县| 大余县| 武功县| 本溪市| 富顺县| 隆尧县| 合肥市| 象州县| 阿合奇县| 宣化县| 芜湖市| 湖南省| 蒲江县|