干货:从输入URL到页面呈现,一眨眼功夫,都经历了啥。

当你在浏览器输入链接或者点击链接的开始,到页面成呈现也就是短短几秒,你可能是一眨眼功夫,浏览器要做的事情那可是非常多的。

干货:从输入URL到页面呈现,一眨眼功夫,都经历了啥。_第1张图片

一、十个步骤

从输入URL到页面呈现经历了以下过程:

  1. URL解析:浏览器首先解析输入的URL,提取出协议(如HTTP、HTTPS)、主机名(如www.example.com)和路径等信息。
  2. DNS解析:浏览器将主机名转换为对应的IP地址,这个过程称为DNS解析。浏览器会首先检查本地DNS缓存,如果找到匹配的IP地址,则直接使用;如果没有,则会向DNS服务器发送请求,获取对应的IP地址。
  3. 建立TCP连接:浏览器通过IP地址和端口号与服务器建立TCP连接。这个过程是通过三次握手来完成的,确保双方都能够正常通信。
  4. 发起HTTP请求:浏览器向服务器发送HTTP请求,请求的内容包括请求方法(如GET、POST)、请求头部(如User-Agent、Cookie)和请求体(对于POST请求)等。
  5. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会进行相应的处理。这可能包括读取数据库、处理业务逻辑、生成动态内容等。
  6. 返回HTTP响应:服务器将处理结果封装成HTTP响应,包括状态码、响应头部和响应体等。常见的状态码有200表示成功,404表示资源未找到,500表示服务器内部错误等。
  7. 下载页面资源:浏览器收到服务器返回的HTTP响应后,会解析响应头部和响应体。如果响应体是HTML文档,则会继续下载其中引用的其他资源,如CSS文件、JavaScript文件、图片等。
  8. 解析和渲染页面:浏览器使用HTML解析器将HTML文档解析成DOM树,然后使用CSS解析器将CSS文件解析成样式规则。接着,浏览器根据DOM树和样式规则进行渲染,将页面内容显示在屏幕上。
  9. JavaScript执行:如果页面中包含JavaScript代码,浏览器会执行这些代码。JavaScript可以修改DOM树、处理用户交互、发送异步请求等。
  10. 页面呈现:最后,浏览器根据渲染结果将页面内容呈现给用户,用户可以看到页面上显示的内容。

这些过程并不是一次性完成的,而是按照顺序逐步进行的。同时,浏览器还会进行一些优化措施,如预解析DNS、缓存资源、并行下载等,以提高页面加载速度和用户体验。


二、前后端分离模式和上述流程的差异

在前后端分离的模式下,前端和后端的交互过程会有一些区别。以下是前后端分离模式下的一般过程:

干货:从输入URL到页面呈现,一眨眼功夫,都经历了啥。_第2张图片

  1. 前端发送请求:前端应用(通常是一个单页应用)通过AJAX或Fetch等方式向后端发送请求。请求的URL通常是后端的API接口。
  2. 后端处理请求:后端接收到前端发送的请求后,会根据请求的URL和方法(GET、POST等)进行相应的处理。这可能包括读取数据库、处理业务逻辑等。
  3. 返回JSON数据:后端处理完请求后,将结果封装成JSON格式的数据返回给前端。这里的返回数据通常是原始数据,而不是经过HTML渲染的完整页面。
  4. 前端解析数据:前端接收到后端返回的JSON数据后,会进行解析和处理。根据数据的结构,前端可能会更新页面的内容、显示错误信息、进行页面跳转等操作。
  5. 前端渲染页面:前端根据解析后的数据,使用JavaScript、HTML和CSS等技术进行页面的渲染。这个过程可以包括更新DOM树、应用样式、处理用户交互等。
  6. 前端发送进一步请求:在页面渲染完成后,前端可能会根据用户的操作或业务需求,再次向后端发送请求,获取更多的数据或执行其他操作。

干货:从输入URL到页面呈现,一眨眼功夫,都经历了啥。_第3张图片

总体上,前后端分离模式下的过程与传统的后端渲染模式有所不同。前端负责处理页面的渲染和用户交互,后端主要负责处理业务逻辑和提供API接口。前后端之间通过API进行数据的交互,前端使用JavaScript等技术解析和处理返回的数据,并自行负责页面的渲染。这种模式可以提高前端开发效率和用户体验,同时也增加了前后端的协作和沟通成本。


三、为了应对这个过程,衍生出那些技术方案

不客气的说,大多数前端技术和框架都是在优化这10个过程,其目的就是让要么让开发人员更爽,要么让用户体验更爽。在这个过程中,衍生出了许多技术方案和工具,以下是一些常见的技术方案:

干货:从输入URL到页面呈现,一眨眼功夫,都经历了啥。_第4张图片

  1. RESTful API:前后端分离模式中,前端通过HTTP请求访问后端的API接口。RESTful API是一种设计风格,通过使用统一的URL和HTTP方法(GET、POST、PUT、DELETE等)来进行资源的操作和交互。
  2. AJAX和Fetch:前端通过AJAX或Fetch等技术,使用JavaScript发送异步请求到后端API接口。这样可以在不刷新整个页面的情况下,实现数据的动态加载和更新。
  3. JSON:在前后端分离模式中,后端通常将处理结果封装成JSON格式的数据返回给前端。JSON是一种轻量级的数据交换格式,易于解析和处理,并且与JavaScript兼容。
  4. 前端框架:为了提高前端开发效率和代码的可维护性,前端开发人员可以使用一些前端框架,如React、Angular、Vue等。这些框架提供了组件化开发、状态管理、路由等功能,使前端开发更加高效和灵活。
  5. 前端构建工具:前端构建工具可以帮助前端开发人员进行代码打包、压缩、优化等工作,以提高页面加载速度和性能。常见的前端构建工具有Webpack、Parcel、Gulp等。
  6. 前端路由:前端路由器可以帮助前端应用实现URL的管理和页面的切换,而不需要后端进行页面的重新加载。常见的前端路由器有React Router、Vue Router等。
  7. 前端状态管理:在前端应用中,状态管理是一个重要的问题。为了管理复杂的应用状态,前端开发人员可以使用一些状态管理库,如Redux、Vuex等。
  8. 前端模板引擎:前端模板引擎可以帮助前端开发人员将数据和模板进行结合,生成最终的HTML内容。常见的前端模板引擎有Handlebars、EJS、Mustache等。

这些技术方案和工具可以帮助前后端分离模式下的开发人员更好地协作和开发,提高开发效率和用户体验。

你可能感兴趣的:(前端,edge浏览器)