進程:一個程序的運行實例,操做系統會爲其分配一塊內存,用來存放代碼、運行中的數據與執行任務的主線程;
線程:負責執行進程中的具體任務;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架構