GZip和deflate:

gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;
deflate是一种压缩算法,是huffman编码的一种加强。

deflate与gzip解压的代码几乎相同,可以合成一块代码。
区别仅有:

deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlib header的两个字节。使用inflateInit2时要求zlib库忽略zlib header。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示raw deflate。
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。即MS的错误deflate (raw deflate).zlib头第1字节一般是0x78, 第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0x7801,python zlib.compress()结果头部为0x789c。

deflate 是最基础的算法,gzip 在 deflate 的 raw data 前增加了 10 个字节的 gzheader,尾部添加了 8 个字节的校验字节(可选 crc32 和 adler32) 和长度标识字节。

SDCH:

我们知道,为了加快网络传输,一般都使用gzip对文本进行压缩。如果你现在用最新版的chrome去访问页面,然后打开network控制面板,查看http headers,细心的你会发现在Request Headers里的Accept-Encoding不再是gzip,deflate,而是多了个sdch,变成了gzip,deflate,sdch。如图:

SDCH到底是什么

sdch是Shared Dictionary Compression over HTTP的缩写,即通过字典压缩算法对各个页面中相同的内容进行压缩,减少相同的内容的传输

如:一个网站中一般都是共同的头部和尾部,甚至一些侧边栏也是共同的。之前的方式每个页面打开的时候这些共同的信息都要重新加载,但使用SDCH压缩方式的话,那些共同的内容只用传输一次就可以了。

sdch主要分为3个部分:首次请求,下载字典,之后的请求。

这种方式最开始的时候是Google工具栏里为IE准备的,目前Chrome已经完全支持了,不过暂时还没发现哪个网站在使用。

SDCH与ajax+pushState

SDCH压缩方式是为了减少相同内容的传输的,同时之前介绍的ajax+pushState也是减少相同内容的传输,他们想达到的效果是一样的。只是SDCH是Google出的,可能今后一段时间只有Chrome浏览器支持,但pushState是HTML5的一个标准,目前已经有Chrome和Firefox支持,之后会有越来越多的浏览器支持。

个人觉得SDCH可能没有什么太大的发展,但可以作为一个新方向研究,并且在合适的时候添加到标准里,让网络传输越来越迅速。

 

最新文章

  1. poj3249Test for Job(记忆化搜索)
  2. Codeforces 719B Anatoly and Cockroaches(元素的交叉排列问题)
  3. 快速排序C++
  4. rediscluster 集群操作(摘抄)
  5. Day5_作业
  6. 工作流学习——Activiti流程变量五步曲 (zhuan)
  7. Codeforces Gym 100114 A. Hanoi tower 找规律
  8. Recommended you 3 most popular Nissan pincode calculators
  9. ###《VIM实用技巧》
  10. IIS出现Server Error in '/' Application.CS0016的解决办法
  11. C语言中typedef
  12. Linux下添加shell脚本使得nginx日志每天定时切割压缩
  13. Servlet--HttpServletRequest接口,HttpServletResponse接口
  14. HDU 1540 Tunnel Warfare(最长连续区间 基础)
  15. linux下如何配置yum源
  16. python取txt文件的若干行到另一个文件
  17. GetFontResourceInfo 函数: 获取字体文件对应的字体名
  18. Angular4 响应式编程
  19. Lombok快速入门
  20. SAP S4/HANA BP屏幕增强添加自定义字段(BDT方式)

热门文章

  1. JAVA方法调用中的解析与分派
  2. floyd求最小环
  3. Kaldi的交叉熵正则化
  4. MacOS安装kafka可视化工具Kafka Tool
  5. 深入理解 RPC
  6. 《一头扎进SpringMvc视频教程》Rest风格的资源URL
  7. Java开发环境配置(4)--Maven安装 环境变量配置,本地仓库配置---插件安装
  8. Centos7 nginx报错403 forbidden
  9. QR 编码原理(二)
  10. HBSX2019 3月训练