gzip压缩

正常的http请求

img

问题在哪呢?

100kb非常大,实际上html是非常冗余的,html,table,div标签都有结束标签,实际上内容都一样,大量的单词是重复的,不管你怎样切分,html都不是精简的

解决方案:zip

img

yahoo主页通过压缩从101kb到15kb

更多细节

这个交换的关键点就在于浏览器和服务器端知道发送zipped文件是ok的,这个约点有两个部分

浏览器发送一个header 告诉服务器端,它支持gzip和deflate(两种压缩方式)

Accept-Encoding: gzip, deflate

服务器端发送一个响应,告诉他内容是压缩的

Content-Encoding: gzip

服务器端如果没有返回上面这个字段,则表明它不是压缩的

#设置server
好消息是我们控制不了浏览器,它要么支持gzip要么不支持

我们要做的是配置服务器端,在浏览器支持gzip的情况下,返回zipped文件

apache中在.htaccess设置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>