web传输过程中的gzip压缩
最近在做项目的时候用到了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压缩的更多相关文章
- ASP.NET MVC3 Web应用程序中启用GZip压缩示例
http://www.mzwu.com/article.asp?id=3284 自定义一个筛选器,继承于GZipAttribute: using System;using System.IO.Comp ...
- 如何在 apache 中开启 gzip 压缩服务
服务器设置 gzip 压缩是 web 开发里很普遍的做法.假设你要请求一个 100k 的文件,网络传输速度为 50k/s,需要 2s 才能得到数据,但是如果在服务器设置了 gzip 压缩,将服务端的文 ...
- IIS中启用gzip压缩(网站优化)
HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的 ...
- [学习笔记] Web设计过程中该做和不该做的
原文网址: http://www.javascriptstyle.com/the-dos-and-donts-of-web-design -该做的: QR代码QR代码即快速响应代码,这是矩阵条形码的一 ...
- php curl 中的gzip压缩性能测试
前因: 请求接口次数很多,每日两亿多次,主要是有些接口返回数据量很大高达110KB(为了减少请求次数,将多个接口合并成一个导致的).后端接口的nginx已经开启gzip,所以做个测试,看看是否在请求时 ...
- WEB前端开发中的图片压缩
web前端开发中,图片的重要性不言而喻,而由于一些图片的大小加上现在国内的网速不给力等种种原因,我们非常有必要对网站使用的图片进行压缩,压缩图片必然会带来图片质量的损失,我们要尽可能的在质量降低很小的 ...
- Web CI过程中的Security解决方案
http://www.infoq.com/cn/articles/WebScan-CI 一. 当前Web应用安全现状 随着中国互联网金融的爆发和繁荣,Web应用在其中扮演的地位也越来越重要,比如Web ...
- Apache中的gzip压缩作用及配置
gzip会对文本资源进行压缩,一般能节省40%的大小,二进制内容不需要开启Gzip压缩,因为这些文件是已经压缩过的,如果再进行gzip压缩可能反而会增加其大小,并且空耗cpu资源啊. 静态资源一般都会 ...
- PHP中开启gzip压缩的2种方法
网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验. php配置改法: 复制代码代码如下: zlib.output_compression ...
随机推荐
- cowboy源码分析(二)
接 cowboy源码分析(一) 下面我们重点看看cowboy_protocol.erl代码 -module(cowboy_protocol). %% API. -export([start_link/ ...
- mtcnn
1.widerface样本标签处理 图片名 x1 y1 x2 y2 x11 y11 x22 y22 多人脸框 # -*- coding: utf- -*- ""&qu ...
- 【问题记录】使用FreeMarker生成数据,模板明明没错却一直报错“The following has evaluated to null or missing:”
今天使用FreeMarker生成数据时一直报错,错误信息是“The following has evaluated to null or missing:”,告知我找不到值. 但是我再三确认,这些属性 ...
- vue-cli webpack配置 简单分析
vue-cli webpack配置分析 入口 从package.json可以看到开发和生产环境的入口. "scripts": { "dev": "no ...
- 第二课 ---git时光穿梭(版本回退)
1. git status 掌握仓库当前的状态. 2. git diff 查看修改的内容部分. //版本回退: 1.查看更新的历史记录. git log git log --pretty=o ...
- Python_Mix*匿名函数,sorted,filter,map,递归函数,二分法查找
lambda匿名函数(函数名统一都叫lambda) 为了解决简单的需求而设计的一句话函数 语法: lambda 参数 返回值 n = lambda a,b: max(a,b) ret = n(9,4) ...
- Selenium自动化获取Http报文信息并判断当前API状态
public int loadingFinishedCount(WebDriver driver){ LogEntries logs = driver.manage().logs().get(&quo ...
- git hub 的使用步骤
1:准备环境 ①电脑已安装git ②注册github账号 一:使用git控制台进行本地操作 ①打开 GitBash ②填写用户名和邮箱作为标识 分别输入以下命令: git config --glob ...
- java第7次作业
interface Pet{ public String getName() ; public String getColor() ; public int getAge() ; } class Ca ...
- java第二次笔记