进程:一个程序的运行实例,操做系统会为其分配一块内存,用来存放代码、运行中的数据与执行任务的主线程;
线程:负责执行进程中的具体任务;css
多线程能够实现并行,提升任务执行效率;
线程越多越好吗?
No,CPU 资源是有限的,当线程过多时,会致使 CPU 切换频繁,对性能有很多损耗。 html
IE6 时代,一个浏览器开启的多个 tab 页都存在于一个进程下面,会致使如下问题:浏览器
Chrome 采用多进程架构来避免上述问题。服务器
由下图能够看出 Chrome 中包含的进程,相同域名的页面放在了同一进程下; 只要打开 Chrome,无论你用不用插件,他都会将每一个插件看成一个进程加载;(终于知道为啥之前的 4G 内存的电脑开个浏览器都那么卡,原来是这么多插件在背后偷偷加载了) 网络
UA 是浏览器的身份证,会附带在 HTTP 请求的 user-agent 中,服务器根据不一样的 UA 返回不一样的页面内容,好比:手机和 PC 会返回不一样的样式。多线程
// 手机
"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
// PC
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
复制代码
服务器会根据不一样的 UA 来设计不一样的页面;每一款新的浏览器若是使用本身独一无二的 UA,那么以前不少服务器要针对他作适配,这显然是不可能的。因此 Chrome 会使用 Mozilla,AppleWebkit 等关键字段表示同时支持这两个,而后再最后加上本身的表示 Chrome/xxx架构