地址栏输入地址到浏览器显示页面
浏览器进程通过IPC向渲染进程提交访问,渲染进程继续加载资源并渲染页面,结束后会给浏览器进程发送消息表明加载完毕
------访问过程---------
在浏览器地址栏输入时,浏览器进程的UI线程会判断要搜索内容还是访问站点
按下回车开始访问时,浏览器进程的UI线程将请求地址传给浏览器进程的网路线程(访问站点资源),浏览器页签出现加载图标
浏览器进程的网络线程收到来自服务器的数据时会了解数据格式, (若为HTML,将数据传给渲染进程做渲染;若为压缩文件,传给下载管理器下载) 检查数据安全性,安全后通知浏览器进程的UI线程数据已经准备好
浏览器进程的UI线程根据当前站点,找到渲染进程渲染页面
**访问站点:总结
浏览器进程的UI线程将请求地址传给浏览器进程的网路线程,网络线程一边向服务器请求,下载数据,UI线程一边寻找、启动渲染进程。当网路线程获取到数据后,渲染进程就可以开始渲染页面了
数据和渲染进程已准备好
浏览器进程与渲染进程间通过IPC 沟通
浏览器进程通过IPC向渲染进程提交访问
渲染进程可以通过网络线程获取数据
这时,地址栏显示出表明安全的图标,同时显示出站点的信息。访问历史中也会加入当前的站点信息。为了能恢复访问历史信息,当页签或窗口被关闭时,访问历史的信息会被存储在硬盘中。
-----文档渲染过程------
渲染进程如何将从网络线程中获取的文本转化成图像的过程
渲染进程最重要的工作就是将 HTML、CSS 和 Javascript 代码转换成一个可以与用户产生交互的页面
渲染进程包括(渲染,运行js的工作):
主线程:解析,编译,运行代码
Worker线程:运行一部分代码;如Service worker,可以控制获取数据从本地还是服务器
合成线程:更高效,顺畅的渲染页面
光栅线程:更高效,顺畅的渲染页面
过程
HTML被HTML解析器解析为DOM树
CSS被CSS解析器解析为CSSOM树
结合DOM树和CSSOM树,生成渲染树
生成layout
绘制顺序
主线程将这些信息交给合成线程,合成线程将层拆分成许多块,将块发给栅格线程
栅格线程光栅化这些块并将它们存储在GPU缓存中
合成线程使用draw quads收集这些信息并创建合成帧