主要包括以下几个基本步骤:
- 浏览器的地址栏输入 URL 并按下回车
- 浏览器查找当前 URL 是否存在缓存,并比较缓存是否过期
- DNS 解析 URL 对应的 IP
- 根据 IP 建立 TCP 连接(三次握手)
- 发送 HTTP 请求
- 服务器处理请求
- 返回 HTTP 响应
- 浏览器接受 HTTP 响应
- 关闭 TCP 连接(四次挥手)
- 浏览器解析 HTML
- 浏览器布局渲染
主要包括以下几个基本步骤:
缓存机制无处不在,有客户端缓存,服务端缓存,代理服务器缓存等。
按缓存位置分类,可以分为:Service Worker,Memory Cache,Disk Cache。
在 Chrome 浏览器开发者工具的 Network 的 Size 栏会出现的四种情况:
浏览器渲染页面的过程就像是盖房子,一般先请求服务器得到 HTML 文件,HTML 文件就相当于网页的框架结构,不过一开始浏览器得到的是显示字节内容的 HTML 文件,必须要内化为自己看的懂的语言才行,于是就把字节转化为字符,也就是程序员能够看的懂的 html 代码。但是此时我们可以看得懂,机器却不行,于是我们需要转化为机器能够看得明白的语言,HTML 是标记语言,里面有很多小于号 <和大于号> 分别标识不同的结构,于是浏览器就把字符转化为 Token,可以简单把 Token 理解为符号标签,比如遇见的第一个的时候转化为一个起始标签,遇到结尾的</ body > 时转化为结束标签,这样字符就被 Token 化了,不同字符就变成有不同特殊意义的东西了。Token 化 以后就要开始升华,也就是把 token 转化为节点对象。在编程里面,对象虽然只是用代码表示而已,但是对象是可以进行编程操作的,因为对象会有自己的属性方法,相当于把 token 盘活了。最后就是把这些节点对象都连到一起,形成文本对象模型,也就是 DOM。DOM 其实就是浏览器自己的语言,每个节点对象相连,形成父子关系,这样后面要对某个节点对象进行操作,对于浏览器来讲就非常友好了。
超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息,HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP 协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
服务器端渲染?
互联网早期,用户使用的浏览器浏览的都是一些没有复杂逻辑的、简单的页面,这些页面都是在后端将 html 拼接好的,然后返回给前端完整的 html 文件,浏览器拿到这个 html 文件之后就可以直接解析展示了,这也就是所谓的服务器端渲染。
客户端渲染?
而随着前端页面的复杂性提高,前端就不仅仅是普通的页面展示了,可能是添加更多功能的组件,复杂性更大,另外,此时 ajax 的兴起,使得页面就开始崇拜前后端分离的开发模式,即后端不提供完整的 html 页面,而是提供一些 api 使得前端可以获取 json 数据,然后前端拿到 json 数据之后再在前端进行 html 页面的拼接,然后展示在浏览器上,这就是所谓的客户端渲染
客户端渲染和服务器端渲染的最重要的区别就是究竟是谁来完成 html 文件的完整拼接
服务器端渲染的优缺点是?
优点: