精华内容
下载资源
问答
  • web性能优化--用gzip压缩资源文件

    万次阅读 多人点赞 2019-07-31 19:14:09
    一、gzip压缩技术 gzip(GNU- ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端...

    #一、gzip压缩技术
    gzip(GNU- ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的大多数浏览器都支持解析gzip压缩过的资源文件。在实际的应用中我们发现压缩的比率往往在3到10倍,也就是本来50k大小的页面,采用压缩后实际传输的内容大小只有5至15k大小,这可以大大节省服务器的网络带宽,同时如果应用程序的响应足够快时,网站的速度瓶颈就转到了网络的传输速度上,因此内容压缩后就可以大大的提升页面的浏览速度。
    实现gzip压缩的方式有多种,比如:nginx、tomcat、java等,选用其中一种即可。
    #二、nginx启用gzip
    Nginx的压缩输出有一组gzip压缩指令来实现。相关指令位于http{….}两个大括号之间,如下:

      #打开gzip压缩
      gzip on;
      #不压缩临界值,大于1K的才压缩,一般不用改
      gzip_min_length 1k;
      #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流,这里设置以16k为单位的4倍申请内存
      gzip_buffers 4 16k;
      #默认为http 1.1,现在99.99%的浏览器基本上都支持gzip解压了,所有无需设置此项
      #gzip_http_version 1.0;
      #gzip压缩比,1 最小处理速度最快,9 最大但处理最慢(传输快但比较消耗cpu)
      gzip_comp_level 2;
      #要压缩的文件类型,注意"text/html"类型无论是否指定总是会被压缩的
      gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/x-httpd-php image/jpeg image/gif image/png;
      #on的话会在Header里增加"Vary: Accept-Encoding",给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
      #我这里的浏览器肯定支持gzip压缩,所以就不开启此功能了
      gzip_vary off;
      #IE6对Gzip不怎么友好,不给它Gzip压缩了
      gzip_disable "MSIE [1-6]\.";
    

    #三、tomcat启用gzip
    目前大多数主流WEB中间件都支持GZIP压缩、下面以Tomcat 为例进行说明:
    找到Tomcat 目录下的conf下的server.xml,并找到如下信息:

          <Connector port = "8080" maxHttpHeaderSize = "8192" maxThreads = "150" minSpareThreads = "25"
                  maxSpareThreads = "75" enableLookups = "false" redirectPort = "8443" acceptCount = "100"
                  connectionTimeout = "20000" disableUploadTimeout = "true"
          将它改成如下的形式(其实在上面代码的下面已经有了,将他们打开而已。):
          <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25"
                 maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100"
                 connectionTimeout="20000" disableUploadTimeout="true"
                 compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata"
                 compressableMimeType="text/html,text/xml" >
          这样,就能够对html和xml进行压缩了,如果要压缩css 和 js,那么需要将
               compressableMimeType=”text/html,text/xml”加入css和js:
               <Connector port="8080" ......... compressableMimeType="text/html,text/xml,text/css,text/javascript" >
    

    一般文本类型的静态文件可以通过这种方式压缩后传输、提高传输效率。
    #四、java服务器启用gzip
    java本身可以通过过滤器filter实现gzip压缩。下面提供一个gzip工具类:

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    
    public class GZIPUtils  {
        public static final String GZIP_ENCODE_UTF_8 = "UTF-8"; 
        public static final String GZIP_ENCODE_ISO_8859_1 = "ISO-8859-1";
    
        
        public static byte[] compress(String str, String encoding) {
            if (str == null || str.length() == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPOutputStream gzip;
            try {
                gzip = new GZIPOutputStream(out);
                gzip.write(str.getBytes(encoding));
                gzip.close();
            } catch ( Exception e) {
                e.printStackTrace();
            }
            return out.toByteArray();
        }
        
        public static byte[] compress(String str) throws IOException {  
            return compress(str, GZIP_ENCODE_UTF_8);  
        }
        
        public static byte[] uncompress(byte[] bytes) {
            if (bytes == null || bytes.length == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
            try {
                GZIPInputStream ungzip = new GZIPInputStream(in);
                byte[] buffer = new byte[256];
                int n;
                while ((n = ungzip.read(buffer)) >= 0) {
                    out.write(buffer, 0, n);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return out.toByteArray();
        }
        
        public static String uncompressToString(byte[] bytes, String encoding) {  
            if (bytes == null || bytes.length == 0) {  
                return null;  
            }  
            ByteArrayOutputStream out = new ByteArrayOutputStream();  
            ByteArrayInputStream in = new ByteArrayInputStream(bytes);  
            try {
                GZIPInputStream ungzip = new GZIPInputStream(in);  
                byte[] buffer = new byte[256];  
                int n;  
                while ((n = ungzip.read(buffer)) >= 0) {  
                    out.write(buffer, 0, n);  
                }  
                return out.toString(encoding);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
        
        public static String uncompressToString(byte[] bytes) {  
            return uncompressToString(bytes, GZIP_ENCODE_UTF_8);  
        } 
        
        public static void main(String[] args) throws IOException {
            String s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            System.out.println("字符串长度:"+s.length());
            System.out.println("压缩后::"+compress(s).length);
            System.out.println("解压后:"+uncompress(compress(s)).length);
            System.out.println("解压字符串后::"+uncompressToString(compress(s)).length());
        }
    }
    

    #五、压缩效果
    压缩前:
    这里写图片描述
    压缩后:
    这里写图片描述

    这里写图片描述
    显然压缩后资源文件变得小了很多,加载速度也快了不少。可见,gzip压缩是页面性能优化的一种有效方式。

    展开全文
  • gzip

    2017-05-01 16:09:04
    def open(filename, mode="rb", compresslevel=9): """Shorthand for GzipFile(filename, mode, compresslevel). The filename argument is required; mode defaults to 'rb' and compresslevel defaults
    def open(filename, mode="rb", compresslevel=9):
        """Shorthand for GzipFile(filename, mode, compresslevel).
    
        The filename argument is required; mode defaults to 'rb'
        and compresslevel defaults to 9.
    
        """
        return GzipFile(filename, mode, compresslevel)
    
    class GzipFile(io.BufferedIOBase):
    import gzip
    
    content = "this is a example of gzip"
    
    with gzip.open("file.gz", 'wb') as f:
        f.write(content)
    with gzip.open("file.gz", "rb") as f:
        print f.read()
    
        output is: this is a example of gzip

    压缩已存在的文件

    with open("mnist1.py", "rb") as fread:
        with gzip.open("mnist1.py.gz", "wb") as fwrite:
            fwrite.writelines(fread)

    这里写图片描述

    with open("file.gz", "rb") as fread, gzip.GzipFile(fileobj=fread) as fwrite:
            # print numpy.frombuffer(fwrite.read(), dtype="S1")
            print fwrite.read()
    展开全文
  • JS GZIP压缩,GZIP解压

    万次阅读 2018-08-26 12:36:32
    GZIP压缩,GZIP解压需要用到 pako.js 文件:下载地址:https://download.csdn.net/download/qq_35713752/10627338 使用方法: JS压缩和解压: var pako = require('../../utils/pako.min.js...

    微信小程序开发交流qq群   173683895

       承接微信小程序开发。扫码加微信。

    GZIP压缩,GZIP解压需要用到 pako.js 文件:下载地址:https://download.csdn.net/download/qq_35713752/10627338

    使用方法:

    JS压缩和解压:

    
    var pako = require('../../utils/pako.min.js');
    Page({
      data: {
      },
      onShow: function () {
        var key = 'absd';
        var _data = '{"body":{"banners":[],"ptypes":[{"addr":1,"productTypes":[1]},{"addr":2,"productTypes":[2]},{"addr":3,"productTypes":[3]}]},"success":true}';
        var data = zip(_data);
        console.log("压缩data:",data);
        console.log("解压压缩后的data:",unzip(data));
        var time = new Date().getTime(); 
        for (let i = 0; i < 1000; i++) {
            zip(_data)
        }
        console.log('压缩一千次使用时间/毫秒:', new Date().getTime() - time)
      },
    })  
    
    // 解压
    function unzip(key) {
      // 将二进制字符串转换为字符数组
      var charData = key.split('').map(function (x) { return x.charCodeAt(0); });
      console.log('压缩后的文件大小:', charData.join(","))
    
      // 将数字数组转换成字节数组
      var binData = new Uint8Array(charData);
    
      // 解压
      var data = pako.inflate(binData);
    
      // 将GunZip ByTAREAR转换回ASCII字符串
      key = String.fromCharCode.apply(null, new Uint16Array(data));
    
      //unescape(str)  --->解压后解码,防止中午乱码
      return unescape(key);
    }
    
    // 压缩
    function zip(str) {
      //escape(str)  --->压缩前编码,防止中午乱码
      var binaryString = pako.gzip(escape(str), { to: 'string' });
      return binaryString;
    }

    文件引用代码目录结构如图:

    console如图:

    展开全文
  • gzip源代码gzip源代码

    热门讨论 2009-10-21 08:11:40
    gzip源代码gzip源代码gzip源代码
  • gzip的Windows版 gzip.exe

    千次下载 热门讨论 2010-04-09 22:19:36
    gzip的Windows版,展开由gzip压缩的文件。gzip压缩文件有gzip.exe gzip.doc Readme Copying 四个子文件夹。 gzip 的Window版的gzip, 也就是gzip124xN.exe. 下载 gzip 的Window版的gzip, 也就是gzip124xN.exe。
  • nginx gzip

    2019-08-26 07:17:57
    Gzip指令 nginx中gzip的主要作用就是用来减轻服务器的带宽问题,经过gzip压缩后的页面大小可以变为原来的30%甚至更小,这样用户浏览页面时的速度会快很多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是...

    Gzip指令
    nginx中gzip的主要作用就是用来减轻服务器的带宽问题,经过gzip压缩后的页面大小可以变为原来的30%甚至更小,这样用户浏览页面时的速度会快很多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压缩并解析。目前的大多数浏览器都支持解析gzip压缩过的页面。

    参数说明:
    gzip
    语法:gzip on | off;
    默认值:gzip off;
    作用域:http, server, location, if in location
    说明:
    启用或禁用gzip压缩模块,on表示启用,off表示禁用

    gzip_min_length
    语法:gzip_min_length length;
    默认值:gzip_min_length 20;
    作用域:http, server, location
    说明:
    设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。因为过小的文件内容压缩之后效果不明显,甚至会比不压缩时更大,所以一般建议长度不小于1000或1k。

    响应头响应浏览器使用gzip解压

    gzip_buffers
    语法:gzip_buffers number size;
    默认值:gzip_buffers 32 4k|16 8k;
    作用域:http, server, location
    说明:
    设置response响应的缓冲区大小。32 4k代表以4k为单位将响应数据以4k的32倍(128k)的大小申请内存。如果没有设置,缓冲区的大小默认为整个响应页面的大小。

    gzip_comp_level
    语法:gzip_comp_level level;
    默认值:gzip_comp_level 1;
    作用域:http, server, location
    说明:
    设置gzip的压缩级别,可接受的范围是从1到9,数字越大压缩率越高,但更消耗CPU,一般设置6即可。
    gzip_types
    语法:gzip_types mime-type …;
    默认值:gzip_types text/html;
    作用域:http, server, location
    说明:
    指定哪些类型的相应才启用gzip压缩,多个用空格分隔。通配符”*”可以匹配任意类型。不管是否指定”text/html”类型,该类型的响应总是启用压缩。一般js、css等文本文件都启用压缩,如application/x-javascript text/css application/xml 等。具体的文件类型对应的mimi-type可以参考conf/mime.types文件。

    gzip_http_version
    语法:gzip_http_version 1.0 | 1.1;
    默认值:gzip_http_version 1.1;
    作用域:http, server, location

    说明:
    设置gzip压缩所需要的请求的最小HTTP版本,低于该版本不使用gzip压缩。一般不用修改,默认即可。
    gzip_disable
    gzip_disable “MSIE [1-6].”

    语法:gzip_disable regex …;
    默认值:—
    作用域:http, server, location
    说明:
    这个指令是在0.6.23版本增加的。
    如果请求的”User-Agent”头信息能被指定的正则表达式匹配,则对响应禁用gzip压缩功能。主要是为了兼容不支持gzip压缩的浏览器,比如IE6,不过IE6早就废弃了
    浏览器和服务器进行gzip压缩的请求和处理返回过程
    在这里插入图片描述
    整个请求过程来看,开启gzip和不开启gip功能,其http的请求和返回过程是一致的,不同的是参数。
    当开启HTTP的gzip功能时,客户端发出http请求时,会通过headers中的Accept-Encoding属性告诉服务器“我支持gzip解压,解压格式(算法)deflate,sdch为:”。Accept-Encoding:gzip,deflate,sdch
    注意,不是request说自己支持解压,Nginx返回response数据的时候就一定会压缩。这还要看本次Nginx返回数据的格式是什么,如果返回数据的原始数据格式,和设置的gzip_types相符合,这时Nginx才会进行压缩。
    Nginx返回response headers是,如果数据被压缩了,就会在Content-Encoding属性中标示gzip,表示接下来返回的response
    content是经过压缩的;并且在Content-Type属性中表示数据的原始格式。
    最后返回经过压缩的response content给客户端,客户端再进行解压。这里注意一下,在客户端发送的headers里面,有一个deflate,sdch。这是两种压缩算法

    展开全文
  • 命令gzip

    千次阅读 2019-03-04 10:55:15
    压缩文件命令gzip
  • linux下gzip

    万次阅读 2020-10-14 22:07:32
    gunzip file1.gz 解压一个叫做 'file1.gz'的文件 gzip file1 压缩一个叫做 'file1'的文件 gzip -9 file1 最大程度压缩
  • linux压缩命令常用:tar,tgz,gzip,zip,rar

    万次阅读 多人点赞 2018-06-02 11:27:14
    linux压缩命令常用的有三个:tar,tgz,gzip,zip 一,tar (一) tar压缩命令 tar -cvf examples.tar files|dir #说明: -c, --create create a new archive 创建一个归档文件 -v, --verbose verbosely list...
  • gzip命令

    千次阅读 2019-03-12 11:05:46
    Linux gzip命令用于压缩文件 gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。 语法 gzip [-acdfhlLnNqrtvV][-S &lt;压缩字尾字符串&gt;][-&lt;压缩效率&gt;][-...
  • gzip gzip属于在线压缩,在资源通过http发送报文给客户端的过程中,进行压缩,可以减少客户端带宽占用,减少文件传输大小。 一般写在server或者location均可; server { listen 6002; server_name **.234.133....
  • python gzip

    2016-10-26 21:26:59
    gzip--支持gzip文件 源文件:Lib/gzip.py 这个模块提供了一些简单的接口来对文件进行压缩和解压缩,类似于GUN项目的gzip和gunzip. 在gzip模块定义了一些方法: gzip.open(filename, mode='rb', compresslevel=9,...
  • gzip: stdin: not in gzip format

    千次阅读 2020-06-11 11:14:05
    gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now 问题是因为这个下载的文件 根本不是压缩文件,而是 网页 可以看一下 [root@localhost ~]# file ...
  • gzip for windows

    热门讨论 2012-09-11 10:28:39
    gzip 1.2.4 for windows source code from gzip.org
  • gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now 原因是这个压缩包没有用gzip格式压缩,所以不用加z指令 # tar -xvf name.tar.gz ...
  • 10.2 gzip--支持操作gzip文件库

    千次阅读 2016-05-07 20:08:47
    本模块主要提供了对gzip文件格式的操作,可以像gzip和gunzip程序一样对文件进行压缩和解压缩的工作。本模块实现的相关功能是基于模块zlib的功能之上进行的。gzip模块提供了一个类GzipFile,它可以使用的函数有open()...
  • 如下图找到对应的文件,productionGzip改为true,开启Gzip压缩 找到下图的文件,这里是Gzip的配置 代码如下: webpackConfig.plugins.push( new CompressionWebpackPlugin({ asset: '[path].gz[query]', ....
  • 本文将介绍gzip和Http的编码关系,以及在Android中,如何正确使用gzip进行数据压缩传输。
  • 完美解决Linux上执行 #tar -xvf jdk-8u131-linux-x64.tar.gz命令后报错问题 gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not r
  • gzip压缩算法

    千次阅读 2019-01-23 13:40:29
    gzip压缩算法
  • 文章目录gzipgzip_static gzip gzip属于在线压缩,在资源通过http发送报文给客户端的过程中,进行压缩,可以减少客户端带宽占用,减少文件传输大小。 一般写在server或者location均可; server { listen 6002; ...
  • nginx开启gzip

    2018-09-07 17:40:09
    nginx开启gzip   gzip on; gzip_disable "msie6";   gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_http_version 1.1; gzip_min_length 256; gzip_types text/plain text/css ...
  • Gzip压缩

    千次阅读 2017-09-14 17:42:09
    gzip 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , ...
  • muduo之GzipFile

    千次阅读 2019-10-28 21:43:25
    GzipFile封装了gzip的一些API,记录一下 // Use of this source code is governed by a BSD-style license // that can be found in the License file. // // Author: Shuo Chen (chenshuo at chenshuo dot com) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,016
精华内容 17,606
热门标签
关键字:

gzip