下载地址: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. Hat’s Words(字典树)

    Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. Android中库项目、jar包等的使用方法

    在软件开发过程中,程序代码的复用,是非常重要的概念.我们总是需要使用一些现有的模块.包.框架,或开发自己的模块.包.框架,来实现对程序代码的复用.比如在JavaWeb编程过程中,经常使用的Struts ...

  3. Spark学习体系

    底理解Spark,能够分为以下几个层次. 1 Spark基础篇 1.1 Spark生态和安装部署 在安装过程中,理解其基本操作步骤. 安装部署 Spark安装简单介绍 Spark的源代码编译 Spar ...

  4. android api 中文 (74)—— AdapterView.AdapterContextMenuInfo

    前言 本章内容是android.widget.AdapterView.AdapterContextMenuInfo,版本为Android 2.3 r1,翻译来自"cnmahj",欢 ...

  5. No.4小白的HTML+CSS心得篇

    书读百遍,其义自见 遵照这句话 今天再次重新把慕课网的HTML+CSS看了一遍,再次阅读感受不再是那么陌生,从而心里默默地喜欢上了这种方式,坚持. 好了,开始今天的收获小总结 1.html中,表单&l ...

  6. [译]Stairway to Integration Services Level 5 - 增量删除数据

    在 dbo.Contact中添加一行记录 Use AdventureWorks go Insert Into dbo.Contact (FirstName, MiddleName, LastName, ...

  7. How Many Answers Are Wrong(并查集)

    Description TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he ...

  8. thinkphp中Conf的配置

    -----www ----------admin -------------Conf ----------admin.php ----------Home -------------Conf ---- ...

  9. __call重载方法

    <?php class Person { function du() { echo "这是一个存在的方法"; } //该方法有两个参数,第一个参数 $function_nam ...

  10. 虚拟环境管理工具virtualenvwrapper-win初试

    virtualenv 用于建立虚拟目录,但是每次进入指定虚拟都必须activate, 而且如果一个环境很久没用了,不记得环境所在目录,就会遗忘该环境,virtualenvwrapper 正是解决以上问 ...