系统性能调优必知必会
陶辉
智链达CTO、前阿里云高级技术专家
立即订阅
4770 人已学习
课程目录
已更新 22 讲 / 共 34 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 万变不离其宗,性能优化也有章可循
免费
基础设施优化 (6讲)
01 | CPU缓存:怎样写代码能够让CPU执行得更快?
02 | 内存池:如何提升内存分配的效率?
03 | 索引:如何用哈希表管理亿级对象?
04 | 零拷贝:如何高效地传输文件?
05 | 协程:如何快速地实现高并发服务?
06 | 锁:如何根据业务场景选择合适的锁?
系统层网络优化 (7讲)
07 | 性能好,效率高的一对多通讯该如何实现?
08 | 事件驱动:C10M是如何实现的?
09 | 如何提升TCP三次握手的性能?
10 | 如何提升TCP四次挥手的性能?
11 | 如何修改TCP缓冲区才能兼顾并发数量与传输速度?
12 | 如何调整TCP拥塞控制的性能?
13 | 实战:单机如何实现管理百万主机的心跳服务?
应用层编解码优化 (5讲)
14 | 优化TLS/SSL性能该从何下手?
15 | 如何提升HTTP/1.1性能?
16 | HTTP/2是怎样提升性能的?
17 | Protobuf是如何进一步提高编码效率的?
18 | 如何通过gRPC实现高效远程过程调用?
期中考试周 (3讲)
期中考试|行至半程,你的收获如何呢?
加餐1|特别福利:陶辉视频课精选
加餐2 |答疑精选:这些问题你都清楚吗?
系统性能调优必知必会
15
15
1.0x
00:00/00:00
登录|注册

15 | 如何提升HTTP/1.1性能?

陶辉 2020-06-01
你好,我是陶辉。
上一讲介绍了为应用层信息安全保驾护航的 TLS/SSL 协议,这一讲我们来看看最常用的应用层协议 HTTP/1.1 该如何优化。
由于门槛低、易监控、自表达等特点,HTTP/1.1 在互联网诞生之初就成为最广泛使用的应用层协议。然而它的性能却很差,最为人诟病的是 HTTP 头部的传输占用了大量带宽。由于 HTTP 头部使用 ASCII 编码方式,这造成它往往达到几 KB,而且滥用的 Cookie 头部进一步增大了体积。与此同时,REST 架构的无状态特性还要求每个请求都得重传 HTTP 头部,这就使消息的有效信息比重难以提高。
你可能听说过诸如缓存、长连接、图片拼接、资源压缩等优化 HTTP 协议性能的方式,这些优化方案有些从底层的传输层优化入手,有些从用户使用浏览器的体验入手,有些则从服务器资源的编码入手,五花八门,导致我们没有系统化地优化思路,往往在性能提升上难尽全功。
那么,如何全面地提升 HTTP/1.1 协议的性能呢?我认为在不升级协议的情况下,有 3 种优化思路:首先是通过缓存避免发送 HTTP 请求;其次,如果不得不发起请求,那么就得思考如何才能减少请求的个数;最后则是减少服务器响应的体积。
接下来,我们就沿着这 3 个思路看看具体的优化方法。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《系统性能调优必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • Geek_007
    FB也搞了一套压缩算法ZSTD,对比起来也比gzip性能强很多,不清楚这些压缩算法的原理是啥,怎么对比,希望老师之后能答疑一下。另外普通的json和pb有不同适合的压缩算法吗?怎么比较呢?

    作者回复: 你好Geek_007,这3个问题我的看法如下:
    1、压缩算法的原理都是基于香农的信息论,将高频出现的信息用更少的比特编码。虽然原理是一致的,但实现上却有很大的差别,比如Huffman通过建立Huffman树来生成编码,而LZ77却是通过滑动窗口,这造成压缩比、压缩速度都很不相同。
    2、比较它们的优劣,主要看3个指标:
    a. 压缩比,比如brotli的压缩比好于ZSTD。
    b. 压缩与解压的速度,比如ZSTD比gzip速度快
    c. 浏览器等中间件的支持程度,现在几乎所有浏览器都支持brotli(即br),但ZSTD少有支持
    3、没有最适合算法,对具体的场景,比较方法参见第2点

    2020-06-01
    3
  • 有铭
    Accept 头部中的 q 质量因子
    ======
    想问一下,当服务器接收到这样的请求后,是背后的应用层处理这个压缩,还是说,支持这个标准的Http服务器本身就可以“透明”的完成这个压缩工作
    2020-06-01
    1
  • 那时刻
    一般来说客户端和代理服务器之间是https协议,而代理服务器和源站之间可以只使用http协议,减少https协议额外的消息交互。
    另外在减少http包体方面,老师文中提到图片压缩,而对于非图片的传输,如定义的json结构,可以通过简化json里key,value的字节数来减少传输包体大小。
    2020-06-01
    1
  • 新声带NewVoice
    尝试过http1.1 chunk子协议,可以在同一个连接上,服务端向客户端发送多次数据。

    作者回复: 没错,有些消息推送是用chunk实现的

    2020-06-08
  • 皮特尔
    最近正准备用gzip优化我们的一个后端服务就看到了这一讲,赶快试试Brotli算法

    作者回复: 在实践中学习,赞!

    2020-06-01
  • 安排
    base64编码的作用是啥呢?只是为了把不可见字符变成可见的吗?搜到的资料都讲base64的实现原理但是并没有讲base64编码的作用的,好像挺多地方用到这个编码了。

    作者回复: 是的,就是为了转换可见字符,这样更方便交换

    2020-06-01
    5
  • Geek_007
    图片压缩,腾讯说他们的TPG比Webp压缩的更小呢😀,不过除了他们内部这么说,没见过第三方资料的证明

    作者回复: 关键还是看浏览器对格式的支持程度。目前,IE、Firefox、Chrome等主流浏览器都支持webp,但TPG就不好说了,除非产品用户主要在使用 QQ浏览器^_^

    2020-06-01
收起评论
7
返回
顶部