第二章 TCP的构成
TCP负责在不可靠的传输信道之上提供可靠的抽象层,向应用层隐藏了大多数网络
通信的复杂细节,比如丢包重发、按序发送、拥塞控制及避免、数据完整,等等。
2.1 三次握手
- 三次握手带来的延迟使得每创建一个新 TCP 连接都要付出很大代价。而这也决定了
提高 TCP 应用性能的关键,在于想办法重用连接。
2.4 队首堵塞
第九章 HTTP简史
HTTP 1.1
- RFC2616发布于1999.06
- Connection keep-alive 持久的链接 重用TCP连接
HTTP 2.0
- HTTP 2.0 的主要目标是改进传输性能,实现低延迟和高吞吐量。
第十章 Web性能要点
- webPageTest 网络请求瀑布图
- 渲染和脚本执行在一个线程上交错进行,不可能并发修改生成的DOM。
- High Performance Networking in Google Chrome
第十一章 HTTP 1.X
HTTP 1.1的一些重要改进
- 持久化连接以支持连接重用;
- 分块传输编码以支持流式响应;
- 请求管道以支持并行请求处理;
- 字节服务以支持基于范围的资源请求;
- 改进的更好的缓存机制。
疑问
- 本章开头谈到,建议避免HTTP重定向? 现在很多网站都用了重定向呀
- 度量和控制协议开销 减少要传输的首部数据(高度重复且未压缩),可以节省相当于一次往返的延迟时间,显著提升很多Web应用的性能??传输数据大小与延迟什么关系?
- css与js是怎样影响页面渲染的?
11.2 HTTP管道
- 很多HTTP库和框架经常会默认使用非持久连接,这种做法多数源于它们提供“更简单 API”的理念。
- HTTP 1.1 不允许多路复用 TCP要求严格按照顺序交付,丢失一个TCP分组就会阻塞所有高序号的分组 次优化交付
- 由于多路复用无法实现,HTTP管道会导致HTTP服务器、代理和客户端出现很多问题,因此大多数浏览器默认禁用HTTP管道
- 实践中部署HTTP管道的最佳途径,就是在客户端和服务器间使用安全通道(HTTPS)。这样,就能可靠地避免那些不理解或不支持管道的中间代理的干扰。
一些奇技淫巧
- 连接和拼合 webpack打包
- 嵌入资源 dataurl
第十二章 HTTP2.0
HTTP2.0通过支持请求与响应的多路复用来减少延迟,通过压缩HTTP首部字段将协议开销降至最低,同时增加对请求优先级和服务器端推送的支持。