为什么BigPipe能够让服务器对浏览器说“我这个请求还没结束,我们保持这个连接不要断开”呢?答案是HTTP1.1的分块传输编码 。
HTTP 1.1引入分块传输编码,允许服务器为动态生成的内容维持HTTP持久链接 。如果一个HTTP消息(请求消息或应答消息)的Transfer-Encoding消息头的值为chunked,那么消息体由数量不确定的块组成——也就是说想发送多少块就发送多少块——并以最后一个大小为0的块为结束 。
实现这个架构需要深刻理解HTTP 1.1的规则,而且要有前端的知识 。在我看来,这就是一个极佳的全栈工程师改变世界的例子 。
截止写书时,Chrome、Safari和Opera已经支持HTTP/2并默认开启,它允许服务器向浏览器“推送”内容 。也就是说,返回的条目数可以比请求的条目数多,这样服务器可以在一开始就推送所有它认为浏览器“应该需要”的资源,而不需要浏览器接受并解析完HTML页面才开始请求下载CSS、JavaScript等 。而且,后面的请求可以复用之前已经建立的底层连接 。
【全栈工程师眼中的HTTP】
推荐阅读
- |才20多岁眼周肌肤就出bug了,关晓彤、吴宣仪的黑眼睛无所遁形了
- 熬夜的人吃什么好 四款药膳轻松去除黑眼圈
- 可治疗眼疾的茶方,茶的明目作用之茶的现代功效之
- 做完瞳线眼睛肿怎么办
- 鸡蛋去黑眼圈方法是什么
- 补充维生素可以淡化黑眼圈吗
- 张飞是古代的什么人物 张飞是不是睁着眼睛睡觉的
- 孩子四周岁眼睛里红血丝
- 半岁娃生眼屎能打消炎针吗
- 招聘|老板笑惨了 企业一半以上是注册监理工程师 监理员异常稀缺