下载地址: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. HDU 1849 Rabbit and Grass

    题解:因为棋子可重叠,所以就等于取石子问题,即尼姆博弈,SG[i]=i,直接将输入数据异或即可. #include <cstdio> int main(){ int SG,n,a; whi ...

  2. hdoj 1878 欧拉回路(无向图欧拉回路+并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878 思路分析:该问题给定一个无向图,要求判断该无向图是否存在欧拉回路:无向图判断存在欧拉回路的两个必 ...

  3. hdu1281结题报告

    哎哎...自己刚刚一看到这个题目居然.....什么都想不到...看了一下别人的解题报告说最大匹配...于是就自己开始构思啦... 对于这个棋盘,有K个可以放棋子的位置....那么 首先我们开始可以求出 ...

  4. nopcommerce插件使用

    nopcommerce是国外用.net开发的电商b2c开源项目,主要涉及技术包括了ef+mvc. 今天主要分析nop的插件机制. 什么是插件?插件是预先开发好的可以独立运行的功能模块,把单独的功能模块 ...

  5. opencv第一站:配置opencv环境(2015-12-12)

    今天论坛申请的书< OpenCV 计算机视觉编程攻略(中国工信出版社)>到了,准备研究研究机器视觉. 晚上安装了 vc2008 及 opencv 最新版 3.0.0,试了各种配置都是错误提 ...

  6. JavaSE学习总结第19天_IO流1

      19.01  集合的特点和数据结构总结 HashSet.HashMap.Hashtable判断元素唯一性的方式: 通过对象的hashCode和equals方法来完成元素唯一性 如果对象的hashC ...

  7. BZOJ 1579: [Usaco2009 Feb]Revamping Trails 道路升级( 最短路 )

    最短路...多加一维表示更新了多少条路 -------------------------------------------------------------------------------- ...

  8. [LeetCode]题解(python):028-Implement strStr()

    题目来源: https://leetcode.com/problems/implement-strstr/ 题意分析: 输入两个字符串haystack和needle,如果needle是haystack ...

  9. sortable.js 华丽丽的排序

    首先导入这几个资源 <link href="/css/jquery-ui-1.10.3.custom.css" rel="stylesheet" type ...

  10. Apache 2.2 到 2.4的不同

    1.权限设定方式变更 2.2使用Order Deny / Allow的方式,2.4改用Require apache2.2: Order deny,allowDeny from allapache2.4 ...