「WebKit 技术内幕」笔记

  1. renderer生成一个虚假的渲染列表,交给外部的GPU绘制
  2. 同一个标签页下面的浏览历史,只与应用层有关。
  3. loader 可控制资源加载优先级
    document > js > images > css 可由浏览器自行控制优先级
  4. 预读 内核扫描页面关键字,涉及到下一页等关键字的时候提前加载下一页相关资源
  5. 关注下preload
  6. 防劫持 gz2
  7. renderer
    tile 将页面分成各个小块来绘制,利用多线程的好处,减少CPU的竞争
  8. WebGL是通过OpenGL ES2来做底层实现
    CSS3动画其实也是通过OpenGL ES2来实现
  9. 写数据进localStorage的步骤(跨2个进程4个线程?)
    写太多次localStorage会增加很多内存
  10. chrome://net-internals/
  11. 浏览器的进程类型
    • Browser 进程 - 浏览器的主进程,负责浏览器界面的显示,各个页面的管理。
    • Renderer 进程 - 网页的渲染简称,负责页面的渲染工作。可能有多个。
    • NPAPI 插件进程 - 为 NPAPI 类型插件创建,插件进程是被共享的。
    • GPU 进程 - 最多只有一个,当且仅当 GPU 硬件加速打开的时候才会被创建。
    • Pepper 插件进程 - 为 Pepper 类型插件创建。
  12. 多进程模型
    • Process-per-site-instance 每一个页面都创建一个独立的 Render 进程,不管这些页面是否来自同一个域,chromium 浏览器的默认行为
    • Process-per-tab 每一个 tab 都创建一个独立的进程,不管是否是不同域不同实例,也是 chromium 的默认行为
    • Single process 该类型含义是 chromium 不为页面创建任何独立的进程,所有渲染工作都是在 Browser 进程中进行,它们是 Browser 进程中的多个线程。该模式在 Android WebView 中被采用
  13. 资源加载器
    • 针对每种资源类型的特定加载器 - ResourceLoader, 只加载某一种资源
    • 资源缓存机制的资源加载器 - CachedResourceLoader, 所有特定加载器都共享它来查找和插入缓存资源
    • 通用资源加载器 - CachedResource, 在 WebKit 需要从网络或者文件系统获取资源的时候使用, 该类只负责获得资源的数据,因此被所有特定资源加载器共享
    CachedResource → ResourceLoader → WebKit 网络模块
  14. 资源的生命周期
    • 判断资源是否在资源中
    • 如果是,则发送一个 http 请求给服务器,说明该资源在本地的一些信息。服务器则根据这些信息做判断
    • 如果没有更新,服务器则返回状态吗 304,表示无需更新
    • 如果有更新,则申请下载最新的资源内容
  15. Chromium 多进程资源加载
    Renderer 进程的资源获取实际上是通过进程间通信将任务交给 Browser 进程来完成, Browser 进程有权限从网络或本地获取资源

转载于:https://www.cnblogs.com/EX32/p/6374100.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值