最近在做项目的时候用到了gzip,发现它的压缩能力还是很强大的,基本能够压缩50%的文本文件大小。以前有所了解,但不够深入,现在详细了解下。

什么是gzip?

根据百度百科的解释:gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。所以gzip被广泛用在网络传输上,毕竟能够节省传输的时间嘛。gzip算法了解

在哪里使用gzip?

我使用的php的codeigniter框架,在框架中可以通过配置开启gzip压缩。原理是加载zlib扩展,然后调用相关函数进行压缩,参考。这里有一个很明显缺点是,你不能过早地输出一些东西给你的浏览器。什么意思呢,就是你不能在压缩前,就输出内容,一个空格也不行,否则会出现整个页面的空白。比如,你有一个变量忘记设置了,出现了php警告,那么整个页面都显示不出来。这无疑是很不友好的。当然,生产环境很少出现提前输出的问题,但是,万一有问题,整个页面显示不了也太致命了。而且还有别的缺点,比如无法对javascript,css和其他图片文件进行压缩,所以对于web传输来说,使用php不是一个最好的选择。

更好的选择,我觉得是通过web服务器进行压缩。令人高兴的是,各大主流web服务器都提供了 gzip 压缩功能呀。比如说,在 nginx 服务器中,只要在配置文件 nginx.conf 中加上一些gzip的配置,参考, 一个简单的配置即可。注意在 gzip_types 这个配置项加上你需要压缩的文件类型。

我做了对比试验:

  • 压缩前:

  • 压缩后

93.5kb变成30多kb, 差别还是很大的。

gzip对于不同类型文件的压缩率?

我没有自己做试验,参考网上的文章,gzip 对于文本文件的压缩率较高,对于图片的压缩率有限。

gzip的优点和缺点

优点当然很明显了,就是可以减少文件大小,提高传输的速率。 缺点是,压缩的过程会增加服务器的运算量,影响服务器的性能。所以,gzip的压缩级别不能开太高了。这里还有一个优化方案,可以让nginx加载http_gzip_static_module 模块,看名字就知道了,就是自己先生成一个同名的静态的gzip文件,这样就不用每次都压缩了。可以参考

web传输过程中的gzip压缩的更多相关文章

  1. ASP.NET MVC3 Web应用程序中启用GZip压缩示例

    http://www.mzwu.com/article.asp?id=3284 自定义一个筛选器,继承于GZipAttribute: using System;using System.IO.Comp ...

  2. 如何在 apache 中开启 gzip 压缩服务

    服务器设置 gzip 压缩是 web 开发里很普遍的做法.假设你要请求一个 100k 的文件,网络传输速度为 50k/s,需要 2s 才能得到数据,但是如果在服务器设置了 gzip 压缩,将服务端的文 ...

  3. IIS中启用gzip压缩(网站优化)

    HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的 ...

  4. [学习笔记] Web设计过程中该做和不该做的

    原文网址: http://www.javascriptstyle.com/the-dos-and-donts-of-web-design -该做的: QR代码QR代码即快速响应代码,这是矩阵条形码的一 ...

  5. php curl 中的gzip压缩性能测试

    前因: 请求接口次数很多,每日两亿多次,主要是有些接口返回数据量很大高达110KB(为了减少请求次数,将多个接口合并成一个导致的).后端接口的nginx已经开启gzip,所以做个测试,看看是否在请求时 ...

  6. WEB前端开发中的图片压缩

    web前端开发中,图片的重要性不言而喻,而由于一些图片的大小加上现在国内的网速不给力等种种原因,我们非常有必要对网站使用的图片进行压缩,压缩图片必然会带来图片质量的损失,我们要尽可能的在质量降低很小的 ...

  7. Web CI过程中的Security解决方案

    http://www.infoq.com/cn/articles/WebScan-CI 一. 当前Web应用安全现状 随着中国互联网金融的爆发和繁荣,Web应用在其中扮演的地位也越来越重要,比如Web ...

  8. Apache中的gzip压缩作用及配置

    gzip会对文本资源进行压缩,一般能节省40%的大小,二进制内容不需要开启Gzip压缩,因为这些文件是已经压缩过的,如果再进行gzip压缩可能反而会增加其大小,并且空耗cpu资源啊. 静态资源一般都会 ...

  9. PHP中开启gzip压缩的2种方法

    网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验. php配置改法: 复制代码代码如下: zlib.output_compression ...

随机推荐

  1. [Database] 不知道表名和字段查找值=1234的数据.

      --如果表比较大,时间会比较长 DECLARE @searchValue NVARCHAR(50) SET @searchValue='1234' DECLARE @t TABLE ( rowNu ...

  2. 多组图自动无限循环(swiper轮播)

    前两天的一个项目中遇到多组图片无限轮播,当时采用了swiper 但是没有解决让它无限轮播.今天再次尝试了一下发现是自己的样式写错了.今天在这里写一下,为了给自己一个警醒不要犯同样的错误 首先先引入一下 ...

  3. css实现div左侧突出一个带边框的三角形

    .vip-control-header{ width: 600px; height: auto; background: #F8F8F8; border: 1px solid #e2e2e2; pad ...

  4. 爬虫(三)http和https协议

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  5. day 10 函数命名空间、函数嵌套和作用域

    1. day 09 内容复习 # 函数 # 可读性强 复用性强 # def 函数名(): # 函数体 #return 返回值 # 所有的函数 只定义不调用就一定不执行 #先定义后调用 #函数名() # ...

  6. 一个简单的windows勒索软件分析

    根据分析,此病毒是一个勒索软件,通过修改登录用户密码,留下勒索QQ号码向用户索要金钱. 它调用了Kernel32.dll里的WinExec来执行更改用户密码的cmd命令,密码为107289,更改完密码 ...

  7. 二进制转base64

    一. 以fetch的获取数据 1. response(后台返回): const buffer = response.arrayBuffer(),将二级制转成arrayBuffer类型 2. buffe ...

  8. Saiku根据入参日期查询出对应的数据(二十)

    Saiku根据入参日期查询出对应的数据 之前好像有写过一篇博客关于saiku date range的,现在进一步更新啦!!! 这里的日期筛选会更完善一些,需要提供两个参数 开始日期与结束日期(star ...

  9. Python正则表达式的re库一些用法(上)

    1.查找文本中的模式 search()函数取模式和要扫描的文本作为输入,找到这个模式时就返回一个match对象.如果没有找到模式,search()就返回None. 每个match对象包含有关匹配性质的 ...

  10. 【基于微信小程序的社区电商平台】第一次迭代心得(非正式版本

    一.迭代任务 团队在第八周确认迭代计划时,是想要在第一阶段实现电商小程序的核心功能,就是买和卖,也是前端和后台数据交换的核心模块.涉及到首页浏览商品信息,查看商品详情及评论,选择加入购物车.关注卖家以 ...