• 浏览器-01 基础介绍


    资料

    WebKit概述

    发展

    • 开源的项目,专注于网页内容的展示,开发出一流的网页渲染引擎;包括:
      • WebCore,包含了对 HTML,CSSW3C规范的实现;
      • WebView,为各个平台的移植并提供相对应的Web接口来操作和显示网页;
    • WebKit2: 新的API层,主要的变化在于将网页的渲染和接口层置于单独的进程,通过IPC来通讯;
      *当网页渲染出现问题时,不会阻碍接口的调用者进程,在很大程度上帮助解决浏览器或调用者的稳定性和安全性问题;
    • Blink:即从WebKi直接复制出来,整理并移除与chromium无关的接口;
      *和WebKit差别越来越大;
      • iframes内容创建单独的沙箱进程来渲染;
      • DOM移入JavaScript中,使JS可以更快的访问DOM;
    • Chromium: 建立在WebKit/Blink之上的浏览器开源项目(浏览器);
      • 采用,如跨进程模型,沙箱模型等新技术;同时支持,如WebGL,Canvas2D,CSS3以及其他 HTML5规范;
    • Chrome:基于chromium开源项目的浏览器,一般选择稳定的版本作为基础,同时整合Google的很多服务;

    WebKit功能模块

    • HTML解析:负责HTML语言的解析;
    • CSS解析:负责CSS的解析工作;
    • 图片解码:支持不同编码格式的图片;
    • JS引擎:JavaScript的解析引擎,缺省的是JavaScriptCore;但是目前 V8更流行;
    • 正则表达式
    • 布局:负责layout的计算和更新工作;
    • 文档对象模型:负责DOM`树及其相应的接口;
    • 渲染:与渲染相关的基础设施,如渲染树,渲染层次树等;
    • SVG支持;
    • XML语言解析;
    • XSLT语言的解析;
    • URL解析器:URL规范的解析;
    • Unicode编解码器:各种编码解码工作;
    • 移植:WebKit中比较大的一部分,不同平台因的移植有不同的实现;

    Chromium概述

    Chromium功能模块

    • Cookie管理器:cookie生命周期的管理;
    • 历史管理器:历史记录的管理;
    • 密码管理器:网页中密码登录信息管理;
    • 窗口管理:多个Tab的管理和切换;
    • 地址栏:地址栏功能,智能地址填充与书签的协同工作;
    • 安全浏览黑名单管理:安全浏览机制
    • 网络栈:与网络传输相关的工作
    • SSL/TLS:网络传输安全;
    • 磁盘缓存:磁盘缓存页面及其替换策略等生命周期的管理;
    • 下载管理器:管理下载相关;
    • 粘帖板:clipboard的功能;
    • 书签管理:书签的组织和管理;
    • URL解析器:同WebKit;
    • Unicode编解码器:同WebKit;
    • 沙箱模型,NaCl,扩展机制,硬件加速架构等等;

    Chromium界面

    Chromium多进程模型

    • 很大程度上也是WebKit2产生的原因;

    概述

    • 多进程架构的好处:
      * 避免单个页面的不响应或奔溃影响整个浏览器的稳定性;
      * 第三方插件奔溃时候不会影响页面或浏览器的稳定性;
      * 方便安全模型的实施; //沙箱模型是基于多进程架构的

    • 进程模型:方框代表进程,连接线代表IPC进程间通信;

    进程类型

    • Browser进程:浏览器的主进程,负责界面的显示,页面的管理,其他各种进程的管理;
    • Render进程:页面的渲染进程,WebKit的工作主要在这个进程中完成;
    • NPAPI插件进程:每种类型的插件只会有一个进程,每个插件进程可以被多个Render进程共享;
    • GPU进程:最多只有一个,当且仅当GPU硬件加速打开的时候才会被创建,主要用于对3D加速调用的实现;
    • Pepper插件进程:同NPAPI插件进程,不同的是为Pepper插件而创建的进程;

    进程特征

    • browser进程和页面是分开的,这保证了页面的奔溃不会导致浏览器主界面的奔溃;
    • 每个页面是独立的进程,这保证了页面之间相互不影响;
    • 插件进程独立,插件的问题不会影响浏览器主界面和页面;

    进程模型的类型

    • Process-per-site-instance: 对同一个域的实例都会创建独立的进程;好处是每个页面互不 影响,坏处自然是资源的巨大浪费;
    • Process-per-site: 不同一个域会创建独立的进程,同一域的不同实例共享同一个进程;好处是对于不同的域可以共享, 相对较小的内存消耗,坏处是可能会有特别大的Renderer进程;
    • Process-per-tab: 为每个标签页创建一个独立的进程,这也是chrome/chromium的缺省行为;
    • Single process: 不为页面创建任何独立的进程,所有渲染工作都在browser进程中;实验性质,不推荐使用;

    沙箱模型

    • 在页面的多进程模型中,页面的渲染是运行在沙箱模型中的Render进程中实现的;
    • 这些渲染引擎没有访问本地资源的能力,这可以保护渲染引擎被入侵;
  • 相关阅读:
    .Net Core使用xxljob定时任务
    Nginx分片限流实现
    [LeetCode] 2288. Apply Discount to Prices
    [LintCode] 183. Wood Cut
    [LeetCode] 1995. Count Special Quadruplets
    [LeetCode] 1534. Count Good Triplets
    [LeetCode] 2280. Minimum Lines to Represent a Line Chart
    【pandas官方文档用户指南】2.数据结构简介
    【pandas官方文档新手教程】:2.十个入门问题
    【pandas官方文档用户指南】1.十分钟入门
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/5034391.html
Copyright © 2020-2023  润新知