一张浏览器加载时序图。以后有时间再分析

本文详细介绍了网页加载过程中的各个关键时间点,包括从导航开始到页面完全加载完毕的整个过程中涉及到的重要时间标记,如DNS解析、连接建立、请求发送及响应接收等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


navigationStart

当访问一个新页面时,当前页面卸载完成所返回的时间点,如果没有当前页面,则返回fetchStart时间点。

unloadEventEnd

如果要打开的页面和当前的页面同源,则返回用户unload事件执行完成后的时间点,如果当前文档不存在或者不同源,则返回0

redirectStart

如果是HTTP重定向,如果跳转都是同源的,则返回开始获取发起重定向的时间点,否则返回0

redirectEnd

如果是同源重定向,返回重定向请求接收完最后一字节的时间点,否则返回0

fetchStart

如果请求是用http get发起的,返回浏览器查缓存之前的时间点,否则返回发起获取资源的时间点

domainLookupStart

返回浏览器发起DNS查询的时间点,如果是长连接或者请求文件来自缓存等本地存储则返回fetchStart时间点

domainLookupEnd

返回结束DNS查询的时间点,如果是长连接或者请求文件来自缓存等本地存储则返回fetchStart时间点

connectStart

返回浏览器向服务器发起建立获取当前文档的连接请求的时间点,

如果是长连接或者请求文件来自缓存等本地存储则返回domainLookupEnd时间点

connectEnd

返回与服务器建立完成连接的时间点,

如果是长连接或者请求文件来自缓存等本地存储则返回domainLookupEnd时间点

requestStart

返回浏览器发起请求的时间,不管是向server还是本地缓存或存储

responseStart

返回浏览器拿到第一个响应字节的时间点,包括从服务器、缓存或者其他本地存储

responseEnd

返回浏览器拿到最后一个响应字节或者传输连接关闭的时间点,包括从服务器、缓存或者其他本地存储

domLoading

返回浏览器将当前文档状态设置成loading的时间点

domInteractive

返回浏览器将当前文档状态设置成interactive的时间点

domContentLoadedEventStart

返回浏览器触发DOMContentLoaded事件执行之前的时间点

domContentLoadedEventEnd

返回浏览器触发DOMContentLoaded事件执行完成的时间点

domComplete

返回浏览器将当前文档状态设置成complete的时间点

loadEventStart

返回浏览器触发load事件执行之前的时间点,否则为0

loadEventEnd

返回浏览器触发load事件执行完成的时间点

 


### 使用 PlantUML 创建时序图 #### 定义参与者 在创建时序图之前,定义参与交互的对象是必要的。这些对象被称为参与者,在PlantUML中使用`participant`关键字来声明。 ```plantuml participant "Web Browser" as WB participant "Server" as S ``` 此段代码定义了两个参与者:“Web Browser”和“Server”,并分别为它们设定了简短的标签WB和S以便后续引用[^5]。 #### 发送消息 一旦参与者被定义好之后,就可以开始描述他们之间的互动过程。这通常涉及到一方给另一方发送消息的动作。在PlantUML里,这种动作可以通过箭头符号来表达: ```plantuml WB -> S: Request Page Load S --> WB: Send HTML Document ``` 这里展示了浏览器向服务器请求页面加载的过程以及服务器响应HTML文档的消息传递方式。 #### 添加激活期 为了更清晰地展示某个时间段内哪个参与者处于活跃状态,可以利用activate命令标记活动区间: ```plantuml WB -> S: Request Resource activate S S --> WB: Return Resource Data deactivate S ``` 这段脚本说明了当资源请求发生时,服务端进入工作模式直到返回数据完成为止[^3]。 #### 自动化循环结构 如果存在重复性的交互行为,则可采用loop语句简化书写复杂度: ```plantuluml loop every 1 second WB -> S: Polling Status Update S --> WB: Respond with Latest Info end loop ``` 以上实例模拟了一个每隔一秒就会发生的轮询更新机制[^4]。 #### 整合示例 下面给出一个完整的例子,综合运用前面介绍过的各个要素构建出一张较为复杂的时序图: ```plantuml @startuml title Web Application Interaction Sequence Diagram actor User participant "Web Client" as WC participant "Application Server" as AS participant Database as DB User -> WC: Open Website URL WC -> AS: HTTP GET /index.html AS --> WC: Response Index Page Content WC -> AS: Submit Login Form activate AS AS -> DB: Verify Credentials DB --> AS: Return Authentication Result deactivate AS AS --> WC: Redirect to Dashboard or Error Message loop Periodic Health Check Every Minute AS -> DB: Query System Metrics DB --> AS: Provide Metric Values end loop @enduml ``` 这张图表描绘了一位用户访问网站登录流程中的主要步骤,包括打开网址、提交表单验证身份直至最后周期性健康检查等一系列操作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值