`
houyongbo03
  • 浏览: 32104 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

用Gzip进行js的超强压缩

 
阅读更多
Gzip的官方网址为:
http://www.gnu.org/software/gzip/

Gzip的使用很简单

解压至某个目录,会看到有一个Gzip.exe文件,然后在命令窗口进入该目录,执行
gzip ext-all.js
ext-all.js马上变成为ext-all.js.gz
大小从原来600多k摇身一变成了160多k,简直压细小很多。这回下载速度就非常快了。
那么浏览器能否解析这种压缩文件?答案是肯定的,前提是告诉浏览器,这种文件需要解压,然后再执行,解压的过程由浏览器来执行。
那么应用程序如何告诉浏览器,该文件需要解压呢,这得由服务器通过Http的Header指令来进行。
在JOffice中,就是通过Filter来进行的。

1.把ext.all.js.gz文件名改为ext.all.gzjs,Filter等一下就会拦截这种文件的访问。

2.写一个Filter,完成向Header添加指令
   代码如下:

package com.htsoft.core.web.filter;  
    import java.io.IOException;  
    import java.util.HashMap;  
    import java.util.Iterator;  
    import java.util.Map;  
    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;  
      
    public class GzipJsFilter implements Filter {  
        Map headers = new HashMap();  
        public void destroy() {  
        }  
        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 {  
                request.setCharacterEncoding("UTF-8");  
                for(Iterator it = headers.entrySet().iterator();it.hasNext();) {  
                    Map.Entry entry = (Map.Entry)it.next();  
                    response.addHeader((String)entry.getKey(),(String)entry.getValue());  
                }  
                chain.doFilter(request, response);  
        }  
      
        public void init(FilterConfig config) throws ServletException {  
            String headersStr = config.getInitParameter("headers");  
            String[] headers = headersStr.split(",");  
            for(int i = 0; i < headers.length; i++) {  
                String[] temp = headers[i].split("=");  
                this.headers.put(temp[0].trim(), temp[1].trim());  
            }  
        }  
    }  

3.在WEB.xml 文件中,添加以下配置:

 

<filter>    
    <filter-name>GzipJsFilter</filter-name>    
    <filter-class>com.htsoft.core.web.filter.GzipJsFilter</filter-class>    
    <init-param>    
        <param-name>headers</param-name>    
        <param-value>Content-Encoding=gzip</param-value>    
    </init-param>  
</filter>  
<filter-mapping>  
<filter-name>GzipJsFilter</filter-name>  
<url-pattern>*.gzjs</url-pattern>  
</filter-mapping>  
<servlet-mapping> 

 

4.在index.jsp中引入该压缩文件:
  <script type="text/javascript" src="<%=request.getContextPath()%>/ext3/ext-all.gzjs"></script>


分享到:
评论
1 楼 mzy0316 2011-12-01  
在内网,600k和100k,用户体验上,感觉不到查不到把.反而让浏览器去执行,怀疑ie6或者360这种浏览器,会不会速度反而变慢呢?

相关推荐

    利用JAVASCRIPT即你想那个GZIP压缩与解压缩

    标题中的“利用JAVASCRIPT实现GZIP压缩与解压缩”指的是在JavaScript环境中,我们可以使用原生或第三方库来处理GZIP格式的压缩和解压缩操作。GZIP是一种广泛使用的数据压缩格式,常用于减少网络传输的数据量,尤其是...

    js压缩gzip格式

    它可能涵盖了在不同操作系统(如Linux、Windows和macOS)上安装gzip的方法,以及如何使用gzip命令行工具对文件进行压缩和解压缩。此外,它可能还包含了如何在服务器配置文件中启用gzip的示例,帮助开发者更好地理解...

    gzip压缩js,csss文件

    在IT行业中,优化网站性能是至关重要的,其中一种方法就是对JavaScript(js)和CSS(css)文件进行压缩。本文将详细讲解如何使用gzip工具来压缩这两种文件,以减少网络传输的数据量,从而提高网页加载速度。 gzip是...

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

    在JavaScript中,使用pako库进行gzip压缩和解压缩非常简单: 1. **压缩**:使用`pako.gzip()`方法,将未压缩的数据作为输入,它会返回一个已压缩的二进制字符串或Buffer(在Node.js环境下)。例如: ```javascript...

    ajax+pako.js实现gzip数据压缩上传,解决post数据过长问题

    2. **使用pako.js进行gzip压缩**:导入pako.js库,然后调用`pako.gzip()`函数对数据进行gzip压缩。例如: ```javascript var dataString = JSON.stringify(yourData); var compressedData = pako.gzip(dataString...

    php gzip 压缩js或css

    此外,对于已经进行了其他压缩(如minify)的文件,再次使用`Gzip`压缩可能效果不明显,因为这些文件可能已经很小了。 总的来说,合理利用`PHP Gzip`压缩能够有效提升网站性能,减少用户等待时间,提供更好的浏览...

    IIS启用GZIP压缩js、css无效的原因及解决方法.docx

    本文主要探讨的是在IIS服务器上启用GZIP压缩针对JavaScript(js)和CSS文件无效的问题及其解决方案。 IIS(Internet Information Services)是微软提供的一个Web服务器,支持多种功能,包括GZIP压缩。当用户发现IIS...

    gzip.rar_C gzip源码_c语言gzip_gzip压缩_gzip解压_poetryfem

    gzip是Linux环境中广泛使用的文件压缩工具,其源代码主要由C语言编写。本文将深入探讨gzip的原理、C语言实现细节以及如何进行gzip压缩和解压缩。 首先,gzip基于著名的DEFLATE算法,该算法结合了LZ77(一种字典压缩...

    gzip实例 ----用GZIP进行简单压缩

    本篇文章将深入探讨GZIP的基本使用,以及如何通过GZIP对单个文件进行简单压缩。 首先,GZIP是一种无损压缩算法,这意味着在压缩和解压缩过程中,原始数据不会丢失,从而保证了数据的完整性。这种特性使得GZIP在保存...

    gzip源码,gzip压缩算法

    GZIP是一种广泛使用的数据压缩格式,主要用于文件传输和存储。它基于DEFLATE算法,该算法结合了LZ77(一种字典压缩方法)和霍夫曼编码(一种熵编码方法),旨在高效地减小文件大小,同时保持可逆性,即解压缩后能...

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

    如果你有一个文件,例如“test.txt”,包含了混合的中英文内容,你可以先读取文件内容,然后用pako进行压缩: ```javascript var fileContent = readFileSync('test.txt', 'utf-8'); // 使用合适的文件读取方法 var...

    22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件

    Gzip是一种广泛使用的压缩算法,其压缩率较高,但压缩和解压缩速度相对较慢。在MapReduce中,通过设置`mapreduce.output.fileoutputformat.compress`为`true`和`mapreduce.output.fileoutputformat.compress.codec`...

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

    如果客户端支持Gzip,它会在请求头中包含`Accept-Encoding: gzip`字段,服务器接收到这个请求后,会将资源(如JavaScript文件)用Gzip压缩后再返回给客户端。 **提高网站运行速度** 1. **减小文件大小**:Gzip能将...

    php zip gzip tar..压缩解压缩类

    5. **tar**:tar是一种打包工具,它可以将多个文件和目录打包成一个单一的归档文件,但不进行压缩。PHP的`PharData`类可以处理tar格式的文件。`createFromDirectory()`方法可以创建一个包含指定目录内容的tar文件,...

    Javascript开发之js压缩篇.pdf

    文章中介绍了两种解决方法:一、使用yui-compressor对js文件进行压缩混淆,二、使用gzip压缩来减少文件体积。 首先,作者提到使用ExtJS库时遇到的问题,即ExtJS庞大的体积如何进行压缩和优化。作者引入了OPOA组件式...

    gzip批量压缩js为gzjs文件

    本文将深入探讨如何在Windows环境下批量使用Gzip工具压缩JavaScript(js)文件,并将其转换为gzjs文件。 首先,我们需要理解“gzip批量压缩js为gzjs文件”的概念。这里的“gzjs”并不是一个标准的文件格式,而是将...

    Net的Gzip压缩类 compressionmodule ,解决js中文压缩问题

    Gzip(GNU zip)是一种广泛使用的数据压缩算法,它可以在发送数据到客户端之前对其进行压缩,从而减少传输的数据量。在ASP.NET中,`compressionmodule`是一个专门用于实现HTTP压缩的模块,它能够帮助开发者有效地...

    gzip 静态解压缩库c++ builder 2007版本,源代码

    1. **文件压缩**:将一个未压缩的文件读入内存,使用gzip库进行压缩,然后将压缩后的数据写回磁盘,生成.gz格式的压缩文件。 2. **文件解压缩**:读取.gz格式的压缩文件,使用gzip库解压缩,将原始数据恢复并写回到...

    window版的gunzip+gzip工具,实现文件压缩和解压缩工具

    gzip是一款开源的压缩程序,它使用LZ77算法进行数据压缩,能够有效地减少文件大小,从而节省存储空间。在Windows环境下,gzip通常被打包成gzip-1.3.12-1-bin.zip这样的压缩文件供用户下载和安装。gzip的主要功能包括...

    最简单的gzip压缩

    标题中的“最简单的gzip压缩”可能是指使用gzip命令行工具进行压缩的过程。在命令行界面,用户只需要输入`gzip 文件名`就能压缩指定的文件。解压gzip压缩文件同样简单,使用`gunzip 压缩文件名.gz`即可。 描述中...

Global site tag (gtag.js) - Google Analytics