`
PerfectPlan
  • 浏览: 121224 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于Gzip压缩js文件提高网站运行速度

阅读更多

关于Gzip压缩js文件提高网站运行速度

 

 

一、为什么要压缩Js文件?

:我们要知道一个服务器在响应客户端请求的效率上,很大一部分取决于界面所需的css、js等文件的大小以及数量。那么对于这些可编辑文件进行压缩,便能够很好的提高

服务器响应客户端请求的效率,从而达到优化的效果。

 

二 、为什么要使用GZIP?

:Gzip是一个非常成熟的文件压缩工具,且客户端浏览器能够自动(自动:需在服务器中配置响应的头部信息)解压Gzip压缩的文件。

 

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

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

 2.在下载的gzip文件加中有一个关于执行gzip程序相关选项信息的DOC文档。

 

 3.我们主要使用gzip对js文件进行压缩处理。当你想执行压缩操作的时候你只需简单的将js文件拖动到gzip.exe文件上,命令窗口闪过便会在你的js文件目录中看见

 一个xx.js.gz的压缩文件包,之后我们将xx.js.gz重命名为xx.gzjs.

   如果你需要在执行压缩的时候带参数选项,你可以在cmd中输入 gzip [options] 压缩文件名(同目录不需要写路径) [压缩后的文件名称] 即可。

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

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

 

 

   代码如下:

JavaCode:

 

package org.viancent.filter.gzfilter;

import java.util.*;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("unchecked")
public class GzFilter implements Filter {
	private Map headers = new HashMap();

	@Override
	public void destroy() {
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// 判断request的类型
		if (request instanceof HttpServletRequest) {
			// 强制转换请求类型,调用doFilter重载方法向响应头部添加配置信息
			doFilter((HttpServletRequest) request,
					(HttpServletResponse) response, chain);
		} else {
			// 执行下一步
			chain.doFilter(request, response);
		}

		/*
		 * 这里是第二种简易写法,直接进行响应头信息设置。使用这种写法便不需要在web.xml中配置初始化参数等等。 缺点就是灵活性不够
		 */
		// ((HttpServletResponse) response).setHeader("Content-Encoding",
		// "gzip");
		// chain.doFilter(request, response);
	}

	public void doFilter(HttpServletRequest request,
			HttpServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// 设置请求的编码格式
		request.setCharacterEncoding("GBK");
		// 使用Map调用其entrySet()返回一个Set<Map.Entry>的集合,Map.Entry为Map的成员内部类,Map.Entry提供两个方法getKey(),getValue()
		for (Iterator it = headers.entrySet().iterator(); it.hasNext();) {
			Map.Entry entry = (Map.Entry) it.next();
			// 循环配置响应头部信息
			response.setHeader((String) entry.getKey(),
					(String) entry.getValue());
		}

		// 执行下一步
		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig request) throws ServletException {
		// 获取headers初始化属性值 对应
		/*
		 * <init-param> <param-name>headers</param>
		 * <param-value>Content-Encoding=gzip</param-value> </init-param>
		 */
		String headerStr = request.getInitParameter("headers");
		// 切割初始化参数headers的数据信息
		String[] headers = headerStr.split(",");
		// 解析web.xml中Filter配置标签中的初始化数据信息
		/*
		 * 在这里提供了一个配置所有相应头部信息的扩展功能,例如可以在xm文件中配置多个参数信息
		 * <param-value>Content-Encoding=gzip,cache=nocache</param-value>
		 */
		for (int i = 0; i < headers.length; ++i) {
			String[] temp = headerStr.split("=");
			// 将配置信息通过=分割后以键值对的形式保存 例如:headers.put("Content-Encoding","gzip");
			this.headers.put(temp[0].trim(), temp[1].trim());
		}
	}

}

web.xml:
			  <filter>
				<filter-name>gzFilter</filter-name>
				<filter-class>org.viancent.filter.gzfilter.GzFilter</filter-class>
				
				<init-param>
					<param-name>headers</param-name>
					<param-value>Content-Encoding=gzip</param-value>
				</init-param>
			  </filter>
			  
			  <filter-mapping>
				<filter-name>gzFilter</filter-name>
				<url-pattern>*.gzjs</url-pattern>
			  </filter-mapping>
Jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> //如果解压出来的js文件出现乱码,请将所有的格式进行统一,尤其是在编译js文件的时候
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
	<html>
		<head>

		<title>My JSP 'index.jsp' starting page</title>
		</head>
	<script type="text/javascript"
		src="<%=request.getContextPath()%>/userjs/ext-all-debug.gzjs" charset="GBK"></script>//保持编码格式
		<body onload="showMessage()">
		</body>
	</html>

 

4
2
分享到:
评论
2 楼 PerfectPlan 2012-06-21  
coding1688 写道
1.web服务器可以配置gzip压缩;
2.java容器(比如tomcat)可以配置gzip压缩的;
3.剩下的才考虑基于filter的gzip压缩吧

这个filter是一个可以处理多方面信息的,gzip的压缩只是其中的一个子项而已,我们也可以使用这个filter配置一些额外的信息。当然如果单纯的针对gzip的话,可以使用你推荐的,不过考虑到后期的其它扩展需求,个人觉得自定义一个filter还是不错的选择
1 楼 coding1688 2012-06-21  
1.web服务器可以配置gzip压缩;
2.java容器(比如tomcat)可以配置gzip压缩的;
3.剩下的才考虑基于filter的gzip压缩吧

相关推荐

    js压缩工具,浏览器可自动解压,加快系统运行速度

    js压缩工具,浏览器可自动解压,加快系统运行速度

    php压缩HTML函数轻松实现压缩html/js/Css及注意事项

    很多人认为启动gzip,但一般启动gzip都比较少对html启动gzip压缩,因为现在的html都是动态的,不会使用浏览器缓存,而启用gzip的话每次请求都需要压缩,会比较消耗服务器资源,对js,css启动gzip比较好是因为js,css...

    优化Node.js Web应用运行速度的10个技巧

    主要介绍了优化Node.js Web应用运行速度的10个技巧,本文讲解了从并行、异步、缓存、gzip 压缩、客户端渲染等等技巧,需要的朋友可以参考下

    Fikker设计与实现V3

    网站管理员或开发人员通过 Fikker 管理平台将指定的页面缓存起来,其他用户在访问相同页面时候,就不需要网站读取数据库后再生成页面了,Fikker 直接返回用户需要的页面,响应速度成倍提升;另外 Fikker 通过 gzip ...

    网奇CMS网站管理系统 v6.0.2 bulid2015.07.09.zip

    36.可设置GZIP压缩,提高网站速度 37.模拟静态,自定义后缀名 38.生成静态页面,并可定义生成速度 39.防盗链,保护网站流量 40.可设置上传文件格式,保护网站安全 41.网站/栏目可按IP限制/阻止访问 42.网站...

    PHP网站基础优化方法小结

     使用该代码后服务器会压缩所有需要传送到客户端的代码,并在浏览器中进行解压,从而使网站运行速度加快。这一功能还可以节省网站空间的流量。 2、不要滥用Javascript和Ajax  只在需要的时候才使用Javascript和...

    nginx 1.9 window 版本

    #开启gzip压缩 gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #设定请求缓冲 client_header_buffer_size 1k; large_client_header_buffers 4 4k; include /etc/nginx/conf.d/*.conf; include /etc/...

    爱革CMS(公司网站) 3.0.rar

    22.动态和静态页面都可以进行Gzip压缩 页面大小可成倍变小,降低流量,提高网页浏览速度。 23.生成页面的目录,名称,扩展名随意设置 生成页面的名称和目录也是灵活的。根据需要随意设置。 24.智能翻译模板,...

    tXml:纯JavaScript的非常小且快速的xml解析器

    此代码最小化为1.6kb + gzip压缩。 此代码比sax / xml2js快5-10倍,但仍然2-3倍 此代码可以在工作程序中运行。 此代码的解析速度平均与本机DOMParser相同,并且可能更快。 此代码易于阅读,非常适合学习。 这段...

    杰奇1.4 破解版+注册机

    GZIP压缩,就是压缩显示的网页,可以加快显示速度,但是会消耗一些服务器资源。 2、参数设置: 后台的系统管理,以及下面每个模块都有一个参数设置,用户可以根据实际情况调整。 3、用户组管理 在后台的系统...

    爱革CMS(门户网站) 3.0.rar

    22.动态和静态页面都可以进行Gzip压缩 页面大小可成倍变小,降低流量,提高网页浏览速度。 23.生成页面的目录,名称,扩展名随意设置 生成页面的名称和目录也是灵活的。根据需要随意设置。 24.智能翻译模板,...

    杰奇1.4 破解版

    GZIP压缩,就是压缩显示的网页,可以加快显示速度,但是会消耗一些服务器资源。 2、参数设置: 后台的系统管理,以及下面每个模块都有一个参数设置,用户可以根据实际情况调整。 3、用户组管理 在后台的系统...

    杰奇1.3标准版

    GZIP压缩,就是压缩显示的网页,可以加快显示速度,但是会消耗一些服务器资源。 &lt;br&gt; 2、参数设置: 后台的系统管理,以及下面每个模块都有一个参数设置,用户可以根据实际情况调整。 &lt;br&gt; 3、用户组管理...

    pubsync-server:pubsync 服务器端应用程序

    使用正则表达式排除文件或文件夹自动删除目标上存在但源上不存在的文件(除非排除) 如果发布失败,自动回滚所有更改利用 gzip 压缩加快传输速度客户端可用: 在 Windows 上安装(在其他操作系统上未经测试) npm ...

    泛域名PHP镜像克隆程序 v4.0.zip

    5. 外加Gzip压缩,访问速度提升效果杆杆滴。 6. 内外链转换功能,网址加不加密?有些域名不想转换?都你说了算。 7. 强大的正则替换,替换过滤?伪原创?换广告?近义词?这些都不是事。 8. 支持各种编码,妈妈...

    6KBBS(6K论坛) v8.0 build 20100901 繁体版.rar

    6KBBS论坛程序采用PHP MySQL架构,并采用缓存机制、Gzip压缩等等,使程序的执行效果更高、速度极快。 2、强大的负载能力 6KBBS采用数据缓存、最少化数据库查询的设计,使得程序在繁忙的服务器环境下仍然快速...

    微思象棋播放器 v1.0.0 Beta 源代码.rar

    主程序经 GZIP 压缩后仅24KB,体积小巧,加载速度快。基于强大的 jQuery 引擎开发,执行效率高。 只需一句“vschess.load("jQuery选择器");”,便可瞬间将对应的 DOM 元素转换成可交互的动态棋盘。 动态棋盘支持...

    Jessibuca H5直播流播放器 v1.0

    8、程序精简,经CDN加速,GZIP压缩(实际下载500k),加载速度更快 9、同时支持http-flv和websocket-flv协议以及websocket-raw私有协议(裸数据,传输量更小,需要搭配Monibuca服务器) 注:以http-flv请求时,存在...

Global site tag (gtag.js) - Google Analytics