下载地址:http://yuilibrary.com/download/yuicompressor/
个人认为现在yuicompressor是最安全,最值得信赖的压缩工具,至少到现在没出现过问题
1、单个压缩
从yuicompressor-2.4.2.zip文件中解压出yuicompressor-2.4.2.jar,在命令窗口中执行以下命令:
java -jar yuicompressor-x.y.z.jar [options] [input file]
java -jar yuicompressor-x.y.z.jar -h //帮助
java -jar yuicompressor-x.y.z.jar a.js -o a-min.js //将a.js压缩成a-min.js
用此软件压缩后,可继续使用Gzip压缩。本工具也可压缩css。java -jar yuicompressor-x.y.z.jar [options] [input file]
java -jar yuicompressor-x.y.z.jar -h //帮助
java -jar yuicompressor-x.y.z.jar a.js -o a-min.js //将a.js压缩成a-min.js
用此软件压缩后,可继续使用Gzip压缩。本工具也可压缩css。
2、批量压缩
首先建立一个DOS批处理脚本来自动处理目录和子目录下的所有js和css文件 myCompressor.bat
当然 名字可以自己随意起,内容如下,复制的时候每行之前最好不要留空,
-----------
@echo off
::设置YUI Compressor启动目录
SET YUIFOLDER=E:compressoryuicompressor-2.4.7uild
::设置你的JS和CSS根目录,脚本会自动按树层次查找和压缩所有的JS和CSS
SET JSFOLDER=E:myJS
echo 正在查找 JavaScript, CSS ...
chdir /d %JSFOLDER%
for /r . %%a in (*.js *.css) do (
@echo 正在压缩 %%~a ...
@java -jar %YUIFOLDER%yuicompressor-2.4.7.jar --charset UTF-8 %%~fa -o %%~fa
)
echo 完成!
pause & exit
-----------
注释:
1、E:compressoryuicompressor-2.4.7uild 是 你下载的yuicompressor包里的路径,到bulid这一级
2、E:myJS 是你存放原js和css的目录,压缩后生成的文件也在这个地方
3、当版本有所不同的时候,注意修改@java -jar %YUIFOLDER%yuicompressor-2.4.7.jar --charset UTF-8 %%~fa -o %%~fa
3、继续gzip压缩
如果你想继续压缩,使用gzip还是可以的,简单提供给大家指令,不具体说了从gzip-1.3.12-1-bin.zip文件中解压出gzip.exe
在命令窗口中执行以下命令:
gzip -h //帮助信息gzip -V //版本信息gzip jquery-1.2.3.js //压缩源文件,默认以.gz为扩展名,结束后删除源文件gzip jquery-1.2.3.js -S .gzjs //压缩源文件,以.gzjs为扩展名gzip jquery-1.2.3.js -S .gzjs -1 //最快压缩gzip jquery-1.2.3.js -S .gzjs -9 //最高压缩
本工具也可压缩css。
<filter><filter-name>AddHeaderFilter</filter-name><filter-class>com.biox.base.AddGzipHeaderFilter</filter-class><init-param><param-name>headers</param-name><param-value>Content-Encoding=gzip</param-value></init-param></filter><filter-mapping><filter-name>AddHeaderFilter</filter-name><url-pattern>*.gzjs</url-pattern></filter-mapping><filter-mapping><filter-name>AddHeaderFilter</filter-name><url-pattern>*.gzcs </url-pattern></filter-mapping><!-- 配置js/css静态压缩过滤器-结束 -->
拦截器 AddHeaderFilter代码:
package com.biox.base;
import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;
import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;
/*** 动态添加Header* @ClassName: AddGzipHeaderFilter* @Description: TODO* @author SUNCY* @date 2013-9-2 下午4:40:06**/public class AddGzipHeaderFilter implements Filter {Map<String, String> headers = new HashMap<String, String>();
@Overridepublic void init(FilterConfig config) throws ServletException {String param = config.getInitParameter("headers");// 此属性在应用中web.xml中设置String[] headers = param.split(",");for (int i = 0; i < headers.length; i++) {String[] temp = headers[i].split("=");this.headers.put(temp[0].trim(), temp[1].trim());}}
@Overridepublic void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {if (req instanceof HttpServletRequest) {doFilter((HttpServletRequest) req, (HttpServletResponse) res, chain);} else {chain.doFilter(req, res);}}
public void doFilter(HttpServletRequest request,HttpServletResponse response, FilterChain chain)throws IOException, ServletException {Iterator<Entry<String, String>> it = headers.entrySet().iterator();for (; it.hasNext();) {Entry<String, String> entry = it.next();response.addHeader((String) entry.getKey(),(String) entry.getValue());}chain.doFilter(request, response);}
@Overridepublic void destroy() {}
}