下载地址: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. C++_template_栈的链式存储及实现

    由于在C++数据结构中的代码不完整,特补全.等日后当工程库调用. 若有疑问,请留言. #include<iostream> using namespace std; template< ...

  2. vs linq to db template

    linq to db template 支持sqlite. mysql .db2. accress. oracle. Firebird等多种数据库以linq方式操作数据. NuGet NuGet 是 ...

  3. 测试横竖屏切换时activity 的生命周期

    对于这个面试题,相信大家都见过,网上给出的答案是: 1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2.设 ...

  4. linux内核源码阅读之facebook硬盘加速利器flashcache

    从来没有写过源码阅读,这种感觉越来越强烈,虽然劣于文笔,但还是下定决心认真写一回. 源代码下载请参见上一篇flashcache之我见 http://blog.csdn.net/liumangxiong ...

  5. GLSL中的各种变量总结

    1.uint CreateShader(enum type) : 创建空的shader object; type: VERTEX_SHADER, 2.void ShaderSource(uint sh ...

  6. Lua学习笔记5:类及继承的实现

    -- Lua中类的实现 -------------------------------- 基类 ---------------------------- classBase = {x = 0,y = ...

  7. kendo ui grid 汉化

    加入js引用 <link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.common.min.css" r ...

  8. sass基本语法

    sass是一种基于ruby语言开发的CSS预处理器.它可以使用变量,嵌套,混入,继承,运算,函数等编程语言具有的特性进行CSS的开发,使得CSS的开发变得简单粗暴清晰可维护. sass有两种后缀文件格 ...

  9. 【在网页中获取截图数据】Chrome和Firefox下的实战经验

    [转载自我在segmentfault的专栏:https://segmentfault.com/a/1190000004584071] 最近在实现一个功能,需求如下: 前提:当前页面无弹窗 页面任意位置 ...

  10. iOS系统原生二维码条形码扫描

    本文讲述如何用系统自带的东东实现二维码扫描的功能:点击当前页面的某个按钮,创建扫描VIEW.细心的小伙伴可以发现 title被改变了,返回按钮被隐藏了.这个代码自己写就行了,与本文关系不大...绿色的 ...