从输入网址到页面展现,我们分为六个步骤:
- 在浏览器中输入URL
- 域名解析
- 服务器处理
- 网站解析
- 浏览器处理
- 渲染网页
1. 在浏览器中输入URL
URL是什么?
URL(Uniform Resource Locator)是统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。基本URL包含称协议、服务器名称(或IP地址)、路径和文件名。
协议是什么?
协议是从该计算机获取资源的方式,常见的是http、https、sftp、file,不同协议有不同的通讯内容格式。http最为常见,http较https多了一层加密,file是常见的文件协议。
2. 域名解析
当我们输入www.baidu.com的时候其实浏览器是不知道www.baidu.com是什么东西的,需要查找www.baidu.com网站所在服务器的IP地址,才能找到目标。
服务器怎么查找IP地址?
- 浏览器缓存 – 浏览器会缓存DNS记录一段时间
- 系统缓存 - 从 Hosts 文件查找是否有该域名和对应 IP。
- 路由器缓存 – 一般路由器也会缓存域名信息。
- ISP DNS 缓存 – 比如到电信的 DNS 上查找缓存。
- 如果都没有找到,则向根域名服务器查找域名对应 IP,根域名(如.com)服务器把请求转发到下一级,直到找到 IP。
3. 服务器处理
web server接受用户的请求,并返回代码
web server 担任管控的角色,对于不同用户发送的请求,会结合配置文件,把不同请求委托给服务器上处理对应请求的程序进行处理(例如CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript,或者一些其它的服务器端技术等),然后返回后台程序处理产生的结果作为响应。
4. 网站处理
通常采用MVC模式,MVC :模型(Model)+视图(View)+控制器(Controller)。
- 模型
模型是将实际开发中的业务规则和所涉及的数据格式模型化,应用于模型的代码只需写一次就可以被多个视图重用。在MVC的三个部件中,模型拥有最多的处理任务。一个模型能为多个视图提供数据。 - 视图
视图是用户看到并与之交互的界面。这是前端工作的主力部分。 -
控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。Controller处于管理角色,从视图接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示模型处理返回的数据。
5. 浏览器处理
通过后台处理返回的html字符串结果会被浏览器读取解析,对应就是html页面加载、解析、渲染的工作。
- 加载
浏览器对一个html页面的加载顺序是从上而下的,并在加载过程并行进行解析渲染处理。在这个过程中遇到link标签、image标签、script标签时,浏览器会再次向服务器发送请求获取css文件、图片资源、js文件,并执行js代码,同步进行加载解析。 - 解析、渲染
解析的过程,其实就是生成解析树,即dom树。dom树是由dom元素及属性节点组成,加上css解析的样式对象和js解析后的动作实现。而渲染,就是将DOM树进行可视化表示。下一步就来到了绘制网页的工作阶段。
6. 渲染网页
浏览器根据 HTML 和 CSS 计算得到渲染树,绘制到屏幕上。js 被执行。