`
jobar
  • 浏览: 340794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

高性能web网站优化原则4——利用gzip压缩组件

 
阅读更多
从HTTP/1.1开始,web客户端在http请求头Accept-Encoding里支持压缩技术
   Accept-Encoding:gzip, deflate, sdch  
   如果服务器看到这个请求,就可以用客户端给定列表里面的压缩方法压缩响应数据,web服务器使用响应头Content-Encoding来通知客户端Content-Encoding: gzip。Gzip是目前最流行和最有效的压缩方法,由GNU开发然后标准化为RFC 1952。其他压缩方式有deflate等,但主流浏览器大部分都支持gzip,但有的不支持deflate,所以gzip是压缩方法的首选。
   问题来了,我们改压缩哪些组件呢?
   服务器会基于文件类型来选择gzip的压缩对象,大部分的网站压缩html文档,css,js文件,或者xml、json格式的返回结果。图片和pdf格式的文件一般不会压缩,因为它们已经被压缩了。尝试压缩这些文件不仅浪费cpu资源,反而有可能会增加压缩文件的大小。
   gzip是有代价的,在服务器端进行压缩要付出额外的cpu资源,同样的在客户端解压也需要消耗cpu资源。权衡利弊要综合考虑响应的大小,带宽以及客户端和服务器之间的距离等因素。一般来说gzip可以降低响应大小的约70%左右,还是挺可观的。
  
   apache服务器端配置
   可以参考http://jingyan.baidu.com/article/359911f555f77857fe030603.html和http://www.jb51.net/article/38350.htm里面的描述,Apache 2.x 以上的服务器一般使用mod_deflate
  
   代理缓存问题
   当浏览器通过代理向服务器发送请求时,情况稍有复杂。假如第一次浏览器请求的时候不支持gzip,由于是第一次通过代理请求,cache是空的,代理转发请求到服务器,服务器做出无压缩的响应,那么这个无压缩的响应就会被代理缓存起来。那如果浏览器同样的url再次发送请求,代理会返回cache中的无压缩响应。反过来,如果第一次请求是支持压缩的,第二次请求是不支持压缩的,那么代理只返回压缩版本的响应而不管请求是压缩的还是无压缩的。
   解决方法是服务器返回的时候加一个响应头:Vary: Accept-Encoding。服务器告诉代理要基于客户端的请求来改变缓存的响应。这就会导致代理缓存多个版本的响应,像前面的例子,代理会缓存无压缩的响应和压缩的响应,随着客户端Accept-Encoding的不同而给出不同的响应。
  
分享到:
评论

相关推荐

    高性能网站建设指南:前端工程师技能精髓

    第4章规则4——压缩组件 第5章规则5——将样式表放在顶部 第6章规则6——将脚本放在底部 第7章规则7——避免CSS表达式 第8章规则8——使用外部和CSS 第9章规则9——减少DNS查找 第10章规则10——精简JavaScript 第11...

    JAVA上百实例源码以及开源项目

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    JAVA上百实例源码以及开源项目源代码

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    java源码包4

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    java源码包---java 源码 大量 实例

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...

    java源码包2

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到...

    java源码包3

    J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理  这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到...

    CuteFTP9简易汉化版

    出租车或GZIP压缩),然后标签产生的归档时间和日期戳。 当地Backup-Schedule单个或重复备份您的本地计算机和安全地存储在远程服务器上的数据。一种上传软件将选中的文件和文件夹上传到远程FTP服务器上的一个归档文件,...

Global site tag (gtag.js) - Google Analytics