静态压缩

一、如何下载GZIP,及使用GZIP?

:1.下载地址:www.gzip.org 下载最新GZIP工具包,主要的就是gzip.exe可执行程序。







二、拦截压缩文件配置请求响应信息。

:为什么要拦截?为了配置请求响应信息,告诉浏览器文件类型。让浏览器自动解压缩文件。

 

 

   代码如下:

JavaCode:

 


js在线压缩JSCompress js gzip压缩_css


1. package
2.   
3. import
4. import
5. import
6. import
7. import
8.   
9. @SuppressWarnings("unchecked")  
10. public class GzFilter implements
11. private Map headers = new
12.   
13. @Override
14. public void
15.     }  
16.   
17. @Override
18. public void
19. throws
20. // 判断request的类型
21. if (request instanceof
22. // 强制转换请求类型,调用doFilter重载方法向响应头部添加配置信息
23.             doFilter((HttpServletRequest) request,  
24.                     (HttpServletResponse) response, chain);  
25. else
26. // 执行下一步
27.             chain.doFilter(request, response);  
28.         }  
29.   
30. /*
31.          * 这里是第二种简易写法,直接进行响应头信息设置。使用这种写法便不需要在web.xml中配置初始化参数等等。 缺点就是灵活性不够
32.          */
33. // ((HttpServletResponse) response).setHeader("Content-Encoding",
34. // "gzip");
35. // chain.doFilter(request, response);
36.     }  
37.   
38. public void
39.             HttpServletResponse response, FilterChain chain)  
40. throws
41. // 设置请求的编码格式
42. "GBK");  
43. // 使用Map调用其entrySet()返回一个Set<Map.Entry>的集合,Map.Entry为Map的成员内部类,Map.Entry提供两个方法getKey(),getValue()
44. for
45.             Map.Entry entry = (Map.Entry) it.next();  
46. // 循环配置响应头部信息
47.             response.setHeader((String) entry.getKey(),  
48.                     (String) entry.getValue());  
49.         }  
50.   
51. // 执行下一步
52.         chain.doFilter(request, response);  
53.     }  
54.   
55. @Override
56. public void init(FilterConfig request) throws
57. // 获取headers初始化属性值 对应
58. /*
59.          * <init-param> <param-name>headers</param>
60.          * <param-value>Content-Encoding=gzip</param-value> </init-param>
61.          */
62. "headers");  
63. // 切割初始化参数headers的数据信息
64. ",");  
65. // 解析web.xml中Filter配置标签中的初始化数据信息
66. /*
67.          * 在这里提供了一个配置所有相应头部信息的扩展功能,例如可以在xm文件中配置多个参数信息
68.          * <param-value>Content-Encoding=gzip,cache=nocache</param-value>
69.          */
70. for (int i = 0; i < headers.length; ++i) {  
71. "=");  
72. // 将配置信息通过=分割后以键值对的形式保存 例如:headers.put("Content-Encoding","gzip");
73. this.headers.put(temp[0].trim(), temp[1].trim());  
74.         }  
75.     }  
76.   
77. }


js在线压缩JSCompress js gzip压缩_css


1. web.xml:  
2.               <filter>  
3.                 <filter-name>gzFilter</filter-name>  
4. class>org.viancent.filter.gzfilter.GzFilter</filter-class>  
5.                   
6.                 <init-param>  
7.                     <param-name>headers</param-name>  
8.                     <param-value>Content-Encoding=gzip</param-value>  
9.                 </init-param>  
10.               </filter>  
11.                 
12.               <filter-mapping>  
13.                 <filter-name>gzFilter</filter-name>  
14.                 <url-pattern>*.gzjs</url-pattern>  
15.               </filter-mapping>


js在线压缩JSCompress js gzip压缩_css



1. Jsp:  
2. <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> //如果解压出来的js文件出现乱码,请将所有的格式进行统一,尤其是在编译js文件的时候
3. "-//W3C//DTD HTML 4.01 Transitional//EN">  
4.     <html>  
5.         <head>  
6.   
7. 'index.jsp'
8.         </head>  
9. "text/javascript"
10. "<%=request.getContextPath()%>/userjs/ext-all-debug.gzjs" charset="GBK"></script>//保持编码格式
11. <span style="white-space: pre;">    </span> <body οnlοad="showMessage()">  
12.         </body>  
13.     </html>


大功告成


动态压缩


第一种使用tomcat的配置文件server.xml打开压缩功能即可,在Connector标签加入以下


useSendfile="false"
                compression="on"
      compressionMinSize="2048"
                noCompressionUserAgents="gozilla, traviata"
                compressableMimeType="text/html,application/xhtml+xml,application/xml,text/xml,text/javascript,text/css,text/plain,application/x- javascript,application/javascript,text/xhtml,text/json,application/json,application/x-www-form-urlencoded,text/javaScript"

第二种使用nginx 的配置文件nginx.conf打开压缩功能即可

1. http {  
2.     include       mime.types;  
3.     default_type  application/octet-stream;  
4.     server_tokens off;                         ##禁止显示nginx软件的版本号  
5.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
6.     #                  '$status $body_bytes_sent "$http_referer" '  
7.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  
8. 
9.     #access_log  logs/access.log  main;  
10.   
11.     sendfile        on;  
12.     #tcp_nopush     on;  
13. 
14.     #keepalive_timeout  0;  
15.     keepalive_timeout  65;  
16.   
17.    gzip  on;  
18.    gzip_min_length  1000;  
19.    gzip_buffers     4 8k;  
20.   
21.    gzip_comp_level 9;               #0-9 默认值为1,值越大压缩率越高,消耗的cpu资源越多,传输量减小。  
22.    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  
23. 
24. 
25.     ### nginx做非80端口转发  
26.     server {  
27.         listen       82;  
28.         server_name  localhost;   
29.         location / {  
30. //127.0.0.1:7001;  
31.             proxy_set_header    Host                $host:82;  
32.             proxy_set_header    X-Real-IP           $remote_addr;  
33.             proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;  
34. "nginx";   
35.         }  
36.     }   
37. }