下载地址: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. 移动服务和 Azure Active Directory 中基于角色的访问控制

    编辑人员注释:本文章由 Matthew Henderson撰写 去年 11月,我们发布了 Azure Active Directory (AAD) 预览版作为移动服务身份提供程序.此举旨在为企业开 ...

  2. word中创建文本框

    word中创建文本框         在插入中点击"文本框"选项卡,例如以下图所看到的:        手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...

  3. 文件下载 .net

    protected void Button1_Click(object sender, EventArgs e)  { /* 微软为Response对象提供了一个新的方法TransmitFile来解决 ...

  4. java覆写hashcode方法

    覆写hashcode 1. 把某个非零常数值,例如17,保存在int变量result中: 2. 对于对象中每一个关键域f(指equals方法中考虑的每一个域): 3, boolean型,计算(f? 0 ...

  5. asp.net mvc ,asp.net mvc api 中使用全局过滤器进行异常捕获记录

    MVC下的全局异常过滤器注册方式如下:标红为asp.net mvc ,asp.net mvc api  注册全局异常过滤器的不同之处 using SuperManCore; using System. ...

  6. jQuery扩展extend一

    把这个扩展写在这里,以后要是忘了可以回头查看. (function(j) {// 这里的j是一个形参,表示传入的jQuery对象,j可以任意填写 j.extend({// 相当于给jQuery对象加上 ...

  7. Python学习之路——模块

    一.模块: 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...

  8. cocos2dx工程

    1. create-android-project.sh 进入 pro.android/ ln -s ../Resources ./Resources

  9. Qt mac QMYSQL(动态加载插件QPluginLoader的用法)

    用此段代码查出问题所在 QPluginLoader loader; loader.setFileName("/Users/danny/Qt5.3.2/5.3/clang_64/plugins ...

  10. QString::toLocal8Bit得听QTextCodec::codecForLocale的

    这个函数用了这么久,到今天程序出错才发现这个问题...也就是说,必须设置QTextCodec *codec = QTextCodec::codecForName("System") ...