• 「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 进程有权限从网络或本地获取资源

  • 相关阅读:
    技巧和诀窍;在VS 2005里优化ASP.NET 2.0Web项目的Build性能
    [资源]Flex 中文帮助
    13 Awesome Javascript CSS Menus
    兼容FF\IE的事件获得方法
    MSVCR80D.dll not found解决方案
    [转]一种革命性的自绘菜单实现
    [ZZ]马化腾关于产品设计与用户体验的培训
    [ZZ]WatiN:在.NET中测试Web应用程序
    How to Recommender Systems?
    淘宝第三届D2在上海举办
  • 原文地址:https://www.cnblogs.com/EX32/p/6374100.html
Copyright © 2020-2023  润新知