简单回答:
- 域名解析。
- 建立TCP连接。
- 请求。
- 处理。
- 响应。
- 释放TCP连接。
- 页面渲染。
中级回答:
- 域名解析
1.1. 浏览器DNS缓存。
1.2. 操作系统DNS缓存。
1.3. 路由器缓存。
1.4. ISP 服务商缓存。
1.5. 根服务器递归查询。 - 建立TCP连接。三次握手。
- 请求。
请求报文格式:
3.1. 请求行。
请求方式、url、版本,比如 POST index.html / HTTP/1.1。
3.2. 请求头。
键值对,比如Connection: Keep-Alive。
3.3. 空行。
3.4. 请求体。
3.4.1. 键值对,比如Pn=2&kw=nba。
3.4.2. 分隔符上传文件。
Content-Type:multipart/form-data;boundary=-----------------------------7db372eb000e2
和
-------------------------------7db372eb000e2
Content-Disposition: form-data; name=“file”; filename=“kn.jpg”
Content-Type: image/jpeg
(此处省略jpeg文件二进制数据…) - 处理。
- 响应。
响应报文格式:
5.1. 响应行。
版本、状态码、描述。比如 HTTP/1.1 200 OK。
5.2. 响应头。
键值对,比如 Content-Length: 122。
5.3. 空行。
5.4. 响应体。 - 释放TCP连接。四次挥手。
- 页面渲染。
7.1. 构建dom树。
7.2. 构建CSSOM 树。
7.3. 构建渲染树。
7.4. 布局计算。
7.5. 渲染呈现。
有那些网站优化的方法?
①减少DNS查询:将服务器域名的ip信息加入本地host文件。
②减少http请求数量,对于图片使用雪碧图,对于html文件和css文件,js文件分别进行合并操作。
③减少下载时间:压缩图片,使用压缩应用压缩文档中的空格,删除文件多余的语句和注释,创造自己的js精简库和精简框架,使用本地浏览器缓存。
④提前渲染开始时间:将css链接放在html头部。
⑤减轻解析器的阻塞:将js链接放在body尾部。