下载地址: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:\compressor\yuicompressor-2.4.7\build

::设置你的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:\compressor\yuicompressor-2.4.7\build    是  你下载的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。
 
      压缩之后的文件已经不是js文件了,我们压缩成了.gzjs或者.gzcs,这时候浏览器已经不认这些文件了,我们就需要写拦截器做处理,
      给浏览器对象设置header,
web.xml
配置:
<!-- 配置js/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>();


@Override
public 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());
}
}


@Override
public 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);
}


@Override
public void destroy() {
}


}

完整的yuicompressor单个压缩和批量压缩以及gzip再次压缩,拦截器的配置等的更多相关文章

  1. 第九章、文件与文件系统的压缩与打包 Linux 系统常见的压缩命令

    Linux 系统常见的压缩命令: 在Linux中,压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』 Linux 支持的压缩命令非常多,且不同 ...

  2. nginx的压缩、https加密实现、rewrite、常见盗链配置

    Nginx 压缩功能 ngx_http_gzip_module #ngx_http_gzip_module 用gzip方法压缩响应数据,节约带宽 #启用或禁用gzip压缩,默认关闭 gzip on | ...

  3. Jsp实现筛选并压缩文件批量下载

    Jsp实现筛选并压缩文件批量下载 首先明确一下需求,网页端点击一下button,传递特定的参数到download.jsp网页,筛选文件,对过滤得到的文件进行压缩,然后返回前端一个压缩包下载. 以下的代 ...

  4. .net 批量导出文件,以ZIP压缩方式导出

     1. 首先Nuget          ICSharpCode.SharpZipLib <script type="text/javascript"> $(funct ...

  5. 压缩文本、字节或者文件的压缩辅助类-GZipHelper

    下面为大家介绍一.NET下辅助公共类GZipHelper,该工具类主要作用是对文本.字符.文件等进行压缩与解压.该类主要使用命名空间:System.IO.Compression下的GZipStream ...

  6. 压缩文本、字节或者文件的压缩辅助类-GZipHelper 欢迎收藏

    压缩文本.字节或者文件的压缩辅助类-GZipHelper 欢迎收藏 下面为大家介绍一.NET下辅助公共类GZipHelper,该工具类主要作用是对文本.字符.文件等进行压缩与解压.该类主要使用命名空间 ...

  7. gzip [选项] 压缩(解压缩)

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用. 语法:gzip ...

  8. 6.2 gzip:压缩或解压文件

    gzip命令 用于将一个大的文件通过压缩算法(Lempel-Ziv coding(LZ77))变成一个小的文件.gzip命令不能直接压缩目录,因此目录需要先用tar打包成一个文件,然后tar再调用gz ...

  9. Android总结之Gzip/Zip压缩

    前言: 做过Android网络开发的都知道,在网络传输中我们一般都会开启GZIP压缩,但是出于刨根问底的天性仅仅知道如何开启就不能满足俺的好奇心的,所以想着写个demo测试一下比较常用的两个数据压缩方 ...

随机推荐

  1. VC中判断指定窗口是否被其他窗口遮挡

    本来是想判断当前窗口是否在最前面,无奈办法用尽就是不行,于是想换个思路:判断指定窗口是否被其他窗口遮挡.然后掘网三尺,找到了这个: bool CTestTray2Dlg::IsCoveredByOth ...

  2. 在Spring Boot启动后执行指定代码

    在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据等等. 在Spring中可以通过ApplicationListener来实现相关的功能,不过在配合Spring Bo ...

  3. 中国天气网API

    中国天气网有三个 API 适用于不同场合的使用. http://m.weather.com.cn/data/101050101.html 这个接口返回的格式如下. { "weatherinf ...

  4. Pain for friend

    For a guy who has experienced his fair share of mysteries,on mystery,I still can't figure out is why ...

  5. CSDN资源页面挂掉了?

    想上传几个文件,结果打不开了

  6. Decorator Pattern(装饰模式)

    装饰模式:动态的给一个对象添加一些额外的职责.当然我们也可以通过继承来实现类似的功能,但是随着子类的增多,各种子类的组合会造成子类的急剧膨胀. Requirement: 假设客户有一个要求,需要打一个 ...

  7. java URI 与URL问题

    File类存在两个看起来很相似的方法toURI()和toURL(),这两个方法都是将文件转换成一个链接,可以网络访问.只是URI和URL的应用范围不同,URI来的更广. 那么为什么要使用toURI() ...

  8. Java中常见的几种类型转换

    public class Main { public static void main(String[] args){ //Int型数字转换成字符串 int num1=123456; //方法1 St ...

  9. SQLserver查询数据类型为ntext是空或NULL值的方法

    --为空的值text ntext select * from lf_newsNg_utf where datalength(newsContentE)=0 or datalength(newsCont ...

  10. poj 2515 Birthday Cake

    /** 大意 : 求1^m + 2^m + 3^m + 4^m +....+ n^m 解题步骤: 先构造从0到m的第1阶差分序列,然后以下所有2---->p阶的差分表. 令C[n+1][1]=n ...