chrome支持sdch压缩,另外不再支持bzip2压缩
转自: http://www.surfchen.org/archives/582
本文按署名·非商业用途·保持一致授权
作者: surfchen at gmail.com, 发表于2010年05月06日08时36分
今日更新了chrome,发现其不再支持bzip2压缩格式.另外新增加了对sdch的支持.
我之前没了解过sdch,刚刚通过google大致了解了一下.下面就说说基本的请求过程,本文并不打算做深入的说明(实际上我也没法谈得深入,因为根本不了解技术细节).
我本来只是想在twitter上发一两句话的,但是不知道为什么twitter的那个按钮好像出了一些问题,换了浏览器也不行,而我又没有web之外的发布工具.于是稍微把打算发twitter的废话扩展一下,发了一篇博客.希望看到我这篇博客的读者里,有人会因此而发起一些项目,例如sdch for nginx,我便可以坐享其成了.(阿,我发现我的废话实在是不少, 我也觉得你费话真不少啊, )
sdch可以利用多个请求里相同的数据进行压缩.例如大多数网站具有相同的头尾以及那些内联的css, javascript,这些都可以避免在多次请求里被重复下载.看起来似乎比传统的gzip只针对单次请求压缩好,但是是不是会带来更复杂的服务器端的开发?例如可能需要把不同的资源区分开来,因为数据样本比较唯一的资源是不适用于sdch的.
sdch主要分成三部分: 首次请求;下载字典;其他请求.
—————————
首次请求
客户端:
Accept-Encoding: sdch
服务器端:
Get-Dictionary: /path/to/dict
—————————
下载字典
客户端根据Get-Dictionary的值来下载字典,普通的HTTP请求.
————————–
其他请求
客户端:
Accept-Encoding: sdch
Avail-Dictionary: xxxxx
服务器端:
根据Avail-Dictionary的值来进行sdch编码,如果Accept-Encoding里有gzip,这些数据还会被gzip压缩.之后返回.
请看如下HTTP请求:
---->>>>请求
GET /static/home/js/login.js?2.0.5 HTTP/1.1
Host: itravel.smartcom.cc
Connection: keep-alive
Cache-Control: max-age=0
If-Modified-Since: Fri, 27 Apr 2012 07:17:06 GMT
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
Accept: */*
Referer: http://itravel.smartcom.cc/login.html?url=%2Faccount%2Findex.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: Hm_lvt_32a185ad9240d9b8e855a6ef775bd3b4=1336459140382; Hm_lpvt_32a185ad9240d9b8e855a6ef775bd3b4=1336459140382
<<<<----响应
HTTP/1.1 304 Not Modified
Server: nginx
Date: Tue, 08 May 2012 06:41:05 GMT
Last-Modified: Fri, 27 Apr 2012 07:17:06 GMT
Connection: close
转自: http://www.surfchen.org/archives/582
本文按署名·非商业用途·保持一致授权
作者: surfchen at gmail.com, 发表于2010年05月06日08时36分
今日更新了chrome,发现其不再支持bzip2压缩格式.另外新增加了对sdch的支持.
我之前没了解过sdch,刚刚通过google大致了解了一下.下面就说说基本的请求过程,本文并不打算做深入的说明(实际上我也没法谈得深入,因为根本不了解技术细节).
我本来只是想在twitter上发一两句话的,但是不知道为什么twitter的那个按钮好像出了一些问题,换了浏览器也不行,而我又没有web之外的发布工具.于是稍微把打算发twitter的废话扩展一下,发了一篇博客.希望看到我这篇博客的读者里,有人会因此而发起一些项目,例如sdch for nginx,我便可以坐享其成了.(阿,我发现我的废话实在是不少, 我也觉得你费话真不少啊, )
sdch可以利用多个请求里相同的数据进行压缩.例如大多数网站具有相同的头尾以及那些内联的css, javascript,这些都可以避免在多次请求里被重复下载.看起来似乎比传统的gzip只针对单次请求压缩好,但是是不是会带来更复杂的服务器端的开发?例如可能需要把不同的资源区分开来,因为数据样本比较唯一的资源是不适用于sdch的.
sdch主要分成三部分: 首次请求;下载字典;其他请求.
—————————
首次请求
客户端:
Accept-Encoding: sdch
服务器端:
Get-Dictionary: /path/to/dict
—————————
下载字典
客户端根据Get-Dictionary的值来下载字典,普通的HTTP请求.
————————–
其他请求
客户端:
Accept-Encoding: sdch
Avail-Dictionary: xxxxx
服务器端:
根据Avail-Dictionary的值来进行sdch编码,如果Accept-Encoding里有gzip,这些数据还会被gzip压缩.之后返回.
请看如下HTTP请求:
---->>>>请求
GET /static/home/js/login.js?2.0.5 HTTP/1.1
Host: itravel.smartcom.cc
Connection: keep-alive
Cache-Control: max-age=0
If-Modified-Since: Fri, 27 Apr 2012 07:17:06 GMT
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
Accept: */*
Referer: http://itravel.smartcom.cc/login.html?url=%2Faccount%2Findex.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: Hm_lvt_32a185ad9240d9b8e855a6ef775bd3b4=1336459140382; Hm_lpvt_32a185ad9240d9b8e855a6ef775bd3b4=1336459140382
<<<<----响应
HTTP/1.1 304 Not Modified
Server: nginx
Date: Tue, 08 May 2012 06:41:05 GMT
Last-Modified: Fri, 27 Apr 2012 07:17:06 GMT
Connection: close
距离原文作者发博已过了整整两年,gzip仍然是压缩Web组件的首选.
关于压缩组件相关的知识,请见http://www.impng.com/web-dev/gzip-components-read-notes.html