首页 > 其他分享 >浏览器的发展史

浏览器的发展史

时间:2023-04-05 22:46:31浏览次数:40  
标签:插件 发展史 浏览器 渲染 线程 进程 页面

01 线程VS进程
多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程来启动和管理的。
一个进程就是一个程序的运行实例。简单来说就是启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫做进程。
线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。

进程和线程之间的关系有4个特点:
  1、进程中的任意一线程执行出错,都会导致整个进程的奔溃;
  2、线程之间共享进程中的数据;
  3、当一个进程关闭后,操作系统会回收进程所占用的内存;
  4、进程之间的内容相互隔离;(若要进行数据通信,则需要使用进程间通信机制IPC)

02 单进程浏览器时代(2007以前)
单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里,这些模块包括了网络、插件、js运行环境、渲染引擎和页面展现等。
缺点:
  1、不稳定;
     早期的插件和渲染引擎模块都是容易出问题的,容易导致整个浏览器的奔溃;
  2、不流畅
     一个脚本无线循环,会独占整个线程,导致其他运行在该线程的模块没有机会去执行任务,导致整个浏览器失去响应变卡顿;
     除了脚本及插件会让浏览器变卡顿之外,页面内存泄漏也是单进程变慢的一个重要原因。
  3、不安全
     通过插件可以获取到操作系统的任意资源,如果是个恶意插件,那么可以释放病毒,窃取账号密码,引发安全性问题;
     页面脚本也可以通过浏览器漏洞来获取系统权限,同样也会引发安全问题。

03 多进程浏览器时代
早期多进程架构
  1、浏览器主进程
  2、插件进程
  3、渲染进程

解决不稳定的问题:由于进程是相互隔离,一个页面或插件崩溃只会影响到当前的页面进程或插件进程,不会影响到其他页面;
解决不流畅问题:js运行在渲染进程中,阻塞当前渲染进程,不会影响到其他页面;
解决不安全的问题:使用安全沙箱(操作系统给进程上了一把锁,不能再硬盘上写入任何数据)。

目前多进程架构
打开浏览器至少包括4个进程:
  1个浏览器主进程
  1个GPU进程
  1个网络进程
  1个渲染进程(可以多个,通常一个tab页面为一个)
另外额外还有:插件进程、拓展进程、iframe进程等

浏览器主进程:主要负责界面显示、用户交互、子进程管理、同时提供存储等功能;
渲染进程:核心任务是将html、css、js转换为用户可以与之交互的网页,排版引擎Blink和javascript引擎V8都是运行在该进程中。出于安全考虑,渲染进程都是运行在沙箱模式下。
GPU进程:主要目的为了实现3D CSS的效果,随后网页、Chrome的UI界面都选择采用GPU来绘制;
网络进程:主要负责页面的网络资源加载;
插件进程:主要负责插件的运行,通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

缺点:
更高的资源占用;
更复杂的体系架构;

所以出现了未来面向服务的架构SOA。

标签:插件,发展史,浏览器,渲染,线程,进程,页面
From: https://www.cnblogs.com/heyujun-/p/17291196.html

相关文章

  • 浏览器划词翻译脚本iTranslator
    iTranslator划词翻译安装,首先浏览器要先安装暴力猴插件,搜索iTranslator安装即可使用,光标选择页面上的词语,按下T键就可以翻译,按下Y键就可以撤销翻译缺点:输入框不能直接翻译,要选择里的打开翻译才会有个输入框翻译......
  • 从浏览器输入 url 到显示出结果的全过程,涉及哪些层哪些协议?
    过程中涉及的协议及层:1.当在浏览器输入URL地址,DNS域名解析协议(应用层协议)解析域名获得IP;2.依据IP地址浏览器向服务器发送HTTP请求,使用TCP协议(传输层协议)与服务器建立连接;3.连接建立时要发送数据,发送数据在网络层使用IP协议(网络层协议);4.期间IP数据包在路由器间路由选择使用......
  • vivo浏览器的快速开发平台实践-总览篇
    一、什么是快速开发平台快速开发平台,顾名思义就是可以使得开发更为快速的开发平台,是提高团队开发效率的生产力工具。近一两年,国内很多公司越来越注重研发效能的度量和提升,基于软件开发的特点,覆盖管理和优化、团队工程实践、个人工程实践、优化流程四大方面。本文所讲的快速开发平台......
  • java使用浏览器请求下载pdf文件
    java使用浏览器请求下载pdf文件代码/***下载pdf文件**@parampdfFileUrl文件地址*@paramfileName文件名称*/publicstaticvoiddownloadPdf(StringpdfFileUrl,StringfileName){ServletRequestAttributesrequestAttributes=(ServletRequestAttr......
  • 为什么 B 页面的 unload 事件在刷新后点击浏览器的返回按钮不触发?
    ......
  • 浏览器显示你的连接不是专用连接怎么解决?
    直接上问题截图:(真的可以解决问题!!!)当你的chorme或edge浏览器打开网页遇到这个问题的时候,不要再去改配hosts、修改DNS地址、不修改WLAN属性了.....你只需要:1.将键盘调整为英文输入状态;2.刷新一下页面,鼠标点击当前页面任意位置;3.依次按键:thisisunsafe(这里注意:是un,不要多打s成sun......
  • 使用navigator.userAgent 判断当前浏览器所处的环境
    https://blog.csdn.net/banana960531/article/details/86572475浏览器对于我们来说,可能是最熟悉的工具了。熟知的浏览器Firefox、Opera、Safari、IE、Chrome以外,据说世界上还有近百种浏览器。通常在开发的时候要做到兼容各种浏览器,因此提炼出判断浏览器类型及系统是很重要的。先......
  • 从输入URL后浏览器的渲染逻辑
    从输入URL到浏览器渲染页面需要经过很多过程,本文简单说明下各个环节的内容主要渲染节点如下:一、浏览器进程说明出于安全考虑,打开一个浏览器的Tab页签,会生成1个浏览器主进程、1个网络进程、1个GPU进程以及多个渲染进程和多个插件进程,所以不同页签数据无法相互访问,多个进程也可......
  • js 获取dom的绝对位置,相对于浏览器显示界面
    //获取左边functiongetElementLeft(element){varactualLeft=element.offsetLeft;varcurrent=element.offsetParent;while(current!==null){actualLeft+=current.offsetLeft;current=current.offsetParent;......
  • 浏览器环境自吐模块
    https://github.com/daisixuan/r0chrome使用chromium查看js使用那些环境dtavm={}dtavm.log=console.logdtavm.proxy=function(obj,objname,type){functiongetMethodHandler(WatchName,target_obj){letmethodhandler={apply(target,thisAr......