详解HTTP压缩

为什么要使用压缩?

怎么在体积变大的同时,继续保持或提高网页加载速度呢?答案之一是“压缩”,http压缩的效果非常明显。

据统计,web应用的体积的平均水平,在2016年是2.5MB,到2017年时上升到3.4MB,而2012年的时候这个值仅仅是1.1MB。可见,web应用的体积在不断增大。

我们用知乎首页作为例子,看看对js文件的压缩效果,这个页面的压缩方式包括了gzip和br压缩。

打开chrome devtools>network,看到size一栏。通过计算,得出压缩前的js总体积为:3623.1kb,压缩后为1,181.3kb,减少了67.4%的体积。所以,压缩绝对是提高加载速度很重要的一个点,也应该引起足够的重视。

如何压缩http资源?

http压缩通常是通过在reponse header指定Content-Encoding首部,告诉客户端response的压缩格式,这样客户端才能正确解压。

压缩的种类有哪几种?

Content-Encoding的值可以是下面这些:

// 常见的都是单个值
Content-Encoding: gzip   // 最常用
Content-Encoding: compress // 基本被废弃
Content-Encoding: deflate  
Content-Encoding: identity // 表示未经过压缩和修改
Content-Encoding: br  // brotli
​
// Multiple, in the order in which they were applied
Content-Encoding: gzip, identity
Content-Encoding: deflate, gzip

最常用的压缩格式是gzip,因为它有不错的压缩率和优秀的兼容性。br是近几年渐渐流行的一种压缩格式,全称叫"brotli",是由Google推出的一种压缩率很高的压缩格式。但因为较新,所以浏览器兼容性并不是很好,支持的浏览器列表如下:

Google Chrome: Chrome 49+ 
Mozilla Firefox: Firefox 44+ 
Opera: Opera 36+

如今,国外国内很多大厂都在慢慢提高对brotli的使用率,它会是将来的主流。

哪些资源可以被压缩?

一般建议对数据尽可能地进行压缩,不过对于特定类型的文件来说,比如jpeg图片文件,已经是进行过压缩的了。有时候再次进行额外的压缩无助于负载体积的减小,反而有可能会使其增大。

值得一提的是,除了静态资源,ajax接口也可以被用来压缩的(文本压缩)。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值