摘要:
在前面讲 HTTP 协议的时候,我们严格遵循了 HTTP 的“请求 - 应答”模型,协议中只有两个互相通信的角色,分别是“请求方”浏览器(客户端)和“应答方”服务器。今天,我们要在这个模型里引入一个新的角色,那就是HTTP 代理。 引入 HTTP 代理后,原来简单的双方通信就变复杂了一些,加入了一个 阅读全文
摘要:
缓存(Cache)是计算机性能的一个重要概念。 由于链路漫长,网络时延不可控,浏览器使用 HTTP 获取资源的成本较高。所以,非常有必要把“来之不易”的数据缓存起来,下次再请求的时候尽可能地复用。 一、服务器的缓存控制(服务器负责控制,浏览器负责缓存) 我们以生鲜速递作为例子说一下。 如果我现在想要 阅读全文
摘要:
“超文本”里含有“超链接”,可以从一个“超文本”跳跃到另一个“超文本”,对线性结构的传统文档是一个根本性的变革。能够使用“超链接”在网络上任意地跳转也是万维网的一个关键特性。它把分散在世界各地的文档连接在一起,形成了复杂的网状结构,用户可以在查看时随意点击链接、转换页面。由浏览器的使用者主动发起的, 阅读全文
摘要:
前面有说到HTTP的性能,七个字概括:“不算差,不够好”,还了解到有“队头阻塞”这一说法,这节学习的重点就是围绕“队头阻塞'这一说法来进行。 一、短连接 HTTP传输数据基于 TCP/IP,每次发送请求前需要先与服务器建立连接,收到响应报文后会立即关闭连接。客户端与服务器的整个连接过程很短暂,不会与 阅读全文
摘要:
一、数据压缩 上一篇博文有说到,如果文件过大,通常浏览器在发送请求时都会带着“Accept-Encoding”头字段,里面是浏览器支持的压缩格式列表,例如 gzip、deflate、br 等,这样服务器就可以从中选择一种压缩算法,放进“Content-Encoding”响应头里,再把原数据压缩后发给 阅读全文
摘要:
我们在前面学到了HTTP报文结构,是由header+body组成。不过我们前面学的知识都还只是停留在header部分,所以现在我们要开始研究body部分。这便引出了HTTP的实体数据概念。 1. 数据类型和编码 在 TCP/IP 协议栈里,传输数据基本上都是“header+body”的格式。但 TC 阅读全文