`
PerfectPlan
  • 浏览: 122311 次
  • 性别: 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压缩吧

相关推荐

    java开启JBoss的HTTP GZIP压缩功能要提高网站访问速度_java生成压缩文件压缩率

    通过理解这些知识点并正确地在JBoss中配置GZIP压缩,可以有效地提升网站的访问速度,提供更好的用户体验,同时节省服务器带宽。不过,需要注意的是,优化的过程应当结合具体应用的实际情况进行,以达到最佳效果。

    gzip批量压缩js为gzjs文件

    总之,批量使用Gzip压缩JavaScript文件可以有效地减小文件体积,提高网站加载速度,同时通过编写批处理脚本,可以自动化这个过程,节省时间和资源。理解这个过程和相关工具的使用,对优化Web应用性能和提升用户体验...

    pako gzip 压缩和解压缩(支持中文).rar

    在IT行业中,数据压缩是一种常见的技术,用于减小文件大小,提高存储效率和网络传输速度。pako是一个高性能的JavaScript库,它实现了多种压缩和解压缩算法,包括gzip。本项目着重介绍了如何使用pako库处理gzip压缩...

    js文件压缩成gzjs格式的方法和工具

    "gzjs"这个格式通常指的是JavaScript文件经过Gzip压缩后的结果。在本篇文章中,我们将探讨如何将JS文件压缩成gzjs格式,以及可以使用的工具。 首先,Gzip是一种数据压缩算法,广泛应用于Web服务器以减小文件传输...

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

    JavaScript(简称JS)是...通过压缩JS文件,我们可以降低网络传输成本,提高用户体验,使网站在各种设备上都能快速加载。同时,了解如何利用批处理文件和命令行工具进行自动化处理,对于开发者来说也是非常重要的技能。

    Gzip工具打包JS、CSS文件,后台解压缩

    在现代Web开发中,为了提高页面加载速度,减少网络传输的数据量,开发者通常会使用Gzip工具对JavaScript和CSS文件进行压缩。Gzip是一种广泛使用的数据压缩格式,它能够有效地减小文件大小,从而加快了文件在网络上的...

    nginx-1.18.0已开启gzip压缩优化vue项目大小.zip

    在现代Web开发中,优化前端项目以提高加载...Nginx的gzip压缩和Vue CLI的打包过程都是为了提高网站的加载速度,提升用户体验。通过了解这些技术细节,开发者可以更好地优化自己的Web应用,使其在性能上达到最佳状态。

    压缩CSS/JS等文件的工具

    压缩JS文件的原理类似,但更复杂,因为它需要考虑到代码的可执行性。JS压缩通常包括变量名混淆、去除注释和空白、以及优化代码结构。这些操作可以在不改变代码功能的情况下,大幅度减小文件大小。YUI Compressor也能...

    一键开启Windows IIS GZIP压缩工具

    GZIP压缩是一种网络数据压缩技术,它能够显著减少网页传输的数据量,从而提高页面加载速度,降低服务器带宽使用,提升用户体验。本文将详细讲解如何在Windows IIS上启用GZIP压缩以及涉及的相关知识点。 首先,我们...

    Gzip压缩无效的终极解决方案!.docx

    Gzip 压缩是一种常用的网页压缩技术,通过减少网页的大小,提高网页的加载速度。然而,有些情况下,Gzip 压缩可能会失效。本文将提供一个终极解决方案,帮助您解决 Gzip 压缩无效的问题。 首先,我们需要了解 Gzip ...

    【合集】优化和提高javascript的运行速度

    为了达到优化和提高JavaScript运行速度的目的,有许多策略和技术可以应用,以下将详细阐述这些知识点。 首先,要确保JavaScript的源码尽可能地高效和简洁。可以通过移除不必要的空格、换行和注释来达到这一点。另一...

    gzip124xN_源文件

    在IT行业中,优化资源加载速度是提升网站性能的关键因素之一,尤其是对于JavaScript(JS)这样的脚本文件。"gzip124xN_源文件"是一个针对JS文件压缩的工具,旨在减小文件大小,加快网页加载速度。下面将详细介绍这个...

    提高.net运行速度

    【提高.NET运行速度】 在.NET开发中,优化代码性能是至关重要的,特别是对于Web应用程序,因为这直接影响到用户体验。以下是一些关键的优化策略,旨在提高.NET程序的运行效率: 1. **避免使用ArrayList**: ...

    gzip.dll 网页数据压缩解压用

    虽然 gzip 压缩可以显著提高网页加载速度,但压缩和解压缩也会消耗 CPU 资源。因此,在高负载的服务器环境中,需要平衡压缩带来的带宽节省和额外计算开销。此外,对于已经很小的文件或者已经经过压缩的文件(如 JPEG...

    Nginx部署使用gzip压缩的Unity网页WebGL

    2. **gzip压缩**:为了提高网站性能,Nginx提供了gzip静态内容压缩功能,可以减小传输数据量,加快页面加载速度。在Nginx配置文件中,我们需要添加或修改以下部分来启用gzip: ```nginx gzip on; gzip_types text...

    js压缩方法

    为了提高网站性能,开发者通常会采用JS压缩方法来减小文件大小。本文将详细探讨JavaScript压缩的方法、原理以及如何实施。 1. **代码混淆(Obfuscation)** 代码混淆是一种压缩技术,它通过重命名变量和函数名,...

    docker下nginx配置压缩字体和图片等配置

    在现代Web开发中,为了提高页面加载速度和减少网络带宽消耗,通常会采用内容压缩技术。Docker中的Nginx服务器作为一个流行的...完成这些步骤后,重启Nginx容器,GZIP压缩就会生效,从而提高网站的加载速度和用户体验。

    js和css压缩工具

    6. **GZIP压缩**:除了JS和CSS本身的压缩,TBCompressor 可能也支持开启服务器端的GZIP压缩,通过在网络传输前先对文件进行压缩,进一步减小传输数据。 7. **预处理支持**:对于CSS,它可能支持Sass、Less等预...

    js压缩工具 一键压缩js

    压缩后的JS文件不仅可以加快页面加载速度,还能提高安全性,因为恶意用户更难以阅读和理解混淆后的代码。 常见的JS压缩工具有很多,例如: 1. **UglifyJS**:这是一个流行的JavaScript压缩器,可以删除未使用的...

Global site tag (gtag.js) - Google Analytics