当前位置:首页 > 行业动态 > 正文

从数据流向熟悉web开发流程

从数据流向熟悉web开发流程:前端采集数据→后端处理数据→数据库存储数据→前端展示数据。

从数据流向熟悉 Web 开发流程

在 Web 开发中,理解数据的流向对于构建高效、稳定的应用程序至关重要,以下将从客户端到服务器端详细阐述数据流向以及与之相关的 Web 开发流程。

一、客户端(浏览器)发起请求

1、用户操作触发

当用户在浏览器中输入网址或点击页面上的链接时,浏览器会解析 URL,用户输入“https://www.example.com/products”,浏览器识别出协议“https”、域名“www.example.com”以及路径“/products”。

对于表单提交,如用户在电商网站的登录表单中输入用户名和密码并点击登录按钮,浏览器会收集表单数据,准备向服务器发送请求。

2、组装 HTTP 请求

浏览器根据不同的请求类型(如 GET、POST 等)组装 HTTP 请求报文,以 GET 请求获取商品列表为例,请求报文可能包含请求行(如“GET /products HTTP/1.1”)、头部字段(如“Host: www.example.com”、“User Agent: [浏览器信息]”)等,如果是 POST 请求提交表单数据,还会在报文中添加请求体,其中包含表单字段及其对应的值。

二、网络传输

1、DNS 解析(若未缓存)

如果浏览器之前没有缓存目标域名的 IP 地址,它会向 DNS 服务器发起解析请求,对于域名“www.example.com”,DNS 服务器会返回与之对应的 IP 地址,如“192.0.2.1”,这一过程将域名转换为服务器在网络中的物理地址,以便建立连接。

2、TCP 连接建立(三次握手)

浏览器与服务器通过 TCP 协议建立连接,首先是客户端发送一个带有 SYN 标志位的报文给服务器,请求建立连接,服务器收到后,回复一个带有 SYN + ACK 标志位的报文表示同意连接,客户端发送一个带有 ACK 标志位的报文确认连接建立,这个过程确保了数据传输的可靠性和双向通信的建立。

从数据流向熟悉web开发流程  第1张

3、发送 HTTP 请求

建立连接后,浏览器将组装好的 HTTP 请求报文通过连接发送给服务器,请求报文在网络中以数据包的形式传输,经过多个网络设备(如路由器)的转发,最终到达服务器。

三、服务器端处理请求

1、接收请求

服务器监听特定端口(如常见的 HTTP 服务端口 80 或 HTTPS 服务端口 443),当接收到来自客户端的请求数据包时,将其暂存到内存缓冲区。

2、解析请求

服务器端的 Web 服务器软件(如 Nginx、Apache 等)解析 HTTP 请求报文,它提取请求行中的请求方法、URL 等信息,分析头部字段,如“Content Type”(用于判断请求体的数据类型)等,对于动态内容请求(如涉及数据库查询的 PHP 脚本请求),服务器还需要确定请求对应的后端应用程序(如 PHP FPM 处理 PHP 脚本)。

3、业务逻辑处理

根据请求的类型和内容,服务器执行相应的业务逻辑,如果是静态资源请求(如 HTML 文件、图片等),服务器直接从文件系统中读取相应文件,对于动态内容请求,服务器可能会执行数据库查询操作,对于一个用户登录验证的请求,服务器会连接数据库,根据用户提供的用户名查询对应的密码哈希值,并与用户输入的密码进行比对验证。

4、生成响应

服务器根据业务逻辑处理结果生成 HTTP 响应报文,响应报文包括状态行(如“HTTP/1.1 200 OK”表示成功,“HTTP/1.1 404 Not Found”表示未找到资源)、头部字段(如“Content Type: text/html; charset = utf 8”指定响应内容的 MIME 类型和字符编码)和响应体(如 HTML 页面内容、JSON 数据等),如果是动态生成的页面,服务器可能会将查询数据库得到的数据填充到 HTML 模板中生成完整的页面内容作为响应体。

四、服务器端返回响应

1、发送响应

服务器将生成的 HTTP 响应报文通过之前建立的 TCP 连接发送回客户端,响应报文同样以数据包的形式在网络中传输,经过路由器等网络设备的转发,最终到达客户端浏览器。

2、关闭连接(可选)

根据 HTTP 协议版本和请求/响应头中的相关设置,服务器可能会在发送完响应后关闭 TCP 连接(如 HTTP/1.0 默认情况),或者保持连接以便后续的请求复用(如 HTTP/1.1 持久连接)。

五、客户端接收响应并呈现

1、接收响应

浏览器接收到服务器返回的响应数据包后,将其重新组装成完整的 HTTP 响应报文。

2、解析响应

浏览器解析响应报文的状态码、头部字段和响应体,如果状态码是 2xx(如 200),则表示请求成功,浏览器继续处理响应体内容;如果是其他错误状态码(如 404),浏览器会根据情况进行相应提示(如显示“找不到网页”),对于响应体中的不同数据类型(如 HTML、JSON),浏览器采用不同的解析方式,如果是 HTML 内容,浏览器会按照 HTML 语法解析并构建页面的文档对象模型(DOM)。

3、呈现页面

浏览器根据解析后的 HTML 内容进行页面渲染,包括布局计算、样式应用等操作,浏览器可能会再次发起请求获取页面所需的其他资源(如 CSS 文件、JavaScript 文件、图片等),直到整个页面完整呈现给用户。

FAQs

问题 1:为什么有时候网页加载很慢?

回答:网页加载慢可能有多种原因,从网络方面来说,可能是网络带宽不足、网络拥塞或者网络延迟高,用户处于网络信号差的偏远地区或者同一网络中有大量设备在进行大数据量的传输(如下载大文件),从服务器端来看,可能是服务器性能差,处理请求的速度慢,比如服务器硬件配置低或者同时处理的请求过多导致资源紧张,客户端本地的问题也可能导致加载慢,如浏览器缓存过多或者存在反面软件占用系统资源影响浏览器性能。

问题 2:什么是 HTTPS,它和 HTTP 有什么区别?

回答:HTTPS 是超文本传输安全协议(Hypertext Transfer Protocol Secure)的缩写,它和 HTTP 的主要区别在于安全性,HTTPS 在 HTTP 的基础上加入了 SSL/TLS 加密协议,在数据传输过程中,HTTPS 会对数据进行加密,使得数据在网络中传输时即使被窃取,窃取者也无法轻易解读其中的内容,而 HTTP 是明文传输,数据容易被窃听和改动,用户在使用 HTTP 访问网站时,用户名和密码等信息是以明文形式传输的,存在安全风险;而使用 HTTPS 访问时,这些信息会被加密传输,大大提高了安全性。

0