自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

系統(tǒng) 瀏覽器
對(duì)于HTML,css和JavaScript是如何變成頁(yè)面的,這個(gè)問(wèn)題你了解過(guò)嗎?瀏覽器究竟在背后都做了些什么事情呢?讓我們?nèi)チ私鉃g覽器的渲染原理,是通往更深層次的開(kāi)發(fā)必不可少的事情,能讓我們更深層次,多角度的去考慮性能優(yōu)化等問(wèn)題。

前言

對(duì)于HTML,css和JavaScript是如何變成頁(yè)面的,這個(gè)問(wèn)題你了解過(guò)嗎?瀏覽器究竟在背后都做了些什么事情呢?讓我們?nèi)チ私鉃g覽器的渲染原理,是通往更深層次的開(kāi)發(fā)必不可少的事情,能讓我們更深層次,多角度的去考慮性能優(yōu)化等問(wèn)題。

HTML,css,JavaScript數(shù)據(jù)經(jīng)過(guò)中間渲染模塊的處理,最終顯示在頁(yè)面上(其中HTML超文本標(biāo)記語(yǔ)言,CSS層疊樣式表,JS為JavaScript,大家一般都知道是什么,寫(xiě)過(guò)網(wǎng)頁(yè)的朋友,學(xué)習(xí)者大都知道的)。

  • HTML的內(nèi)容是由標(biāo)記和文本組成
  • CSS稱為層疊樣式表,是由選擇器和屬性組成
  • JS是可以使網(wǎng)頁(yè)的內(nèi)容“動(dòng)”起來(lái)

有人說(shuō)渲染流程可以分為:構(gòu)建DOM樹(shù),樣式計(jì)算,布局階段,分層,繪制,分塊,光柵化和合成等。其中瀏覽器復(fù)習(xí)一下,它是多線程的的,js是單線程的,JS在瀏覽器中,它可以是多線程的。

下面圍繞瀏覽器渲染原理話題開(kāi)始描述,為什么要了解瀏覽器渲染頁(yè)面機(jī)制呢?接下來(lái)讓我慢慢告訴你:

瀏覽器渲染原理

首先,JavaScript引擎是基于事件驅(qū)動(dòng)單線程執(zhí)行的,渲染線程負(fù)責(zé)渲染瀏覽器界面,但是GUI渲染線程與JS引擎是互斥的,當(dāng)JS引擎執(zhí)行時(shí)GUI線程會(huì)被掛起,GUI的更新也會(huì)被保存在一個(gè)隊(duì)列中,等到JS引擎空閑時(shí)才有機(jī)會(huì)被執(zhí)行。

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

那么什么是DOCTYPE以及作用呢

DTD,document type definition, 文檔類型定義,是一系列的語(yǔ)法規(guī)則,用來(lái)定義XML或(x)HTML的文件類型。瀏覽器會(huì)使用它來(lái)判斷文檔類型,決定使用何種協(xié)議來(lái)解析,以及切換瀏覽器模式。

DOCTYPE是用來(lái)聲明文檔類型和DTD規(guī)范的,一個(gè)主要的用途便是文件的合法性驗(yàn)證。如果文件代碼不合法,那么瀏覽器解析時(shí)便會(huì)出一些差錯(cuò)。

下圖為瀏覽器的渲染過(guò)程圖:

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

重排Reflow

重排的定義:DOM結(jié)構(gòu)中的各個(gè)元素都有自己的盒子模型,這些都需要瀏覽器根據(jù)各種樣式來(lái)計(jì)算并根據(jù)計(jì)算結(jié)果將元素放到它該出現(xiàn)的位置,這個(gè)過(guò)程稱之為reflow.

觸發(fā)Reflow情況

  • 當(dāng)你增加,刪除,修改Dom節(jié)點(diǎn)時(shí)會(huì)導(dǎo)致Reflow或Repaint
  • 當(dāng)你移動(dòng)DOM的位置,或是搞個(gè)動(dòng)畫(huà)的時(shí)候
  • 當(dāng)你修改CSS樣式的時(shí)候
  • 當(dāng)你Resize窗口的時(shí)候,或是滾動(dòng)的時(shí)候
  • 當(dāng)你修改網(wǎng)頁(yè)的默認(rèn)字體時(shí)

重繪Repaint

重繪的定義,當(dāng)各種盒子的位置,大小以及其他屬性,例如顏色,字體大小等都確定下來(lái)后,瀏覽器于是便把這些元素都按照各自的特性繪制了一遍,于是頁(yè)面的內(nèi)容出現(xiàn)了,這個(gè)過(guò)程稱為repaint。

觸發(fā)Repaint情況

  • DOM改動(dòng)
  • CSS改動(dòng)

講到這里,下面來(lái)細(xì)分說(shuō)一下吧!

簡(jiǎn)單介紹一下瀏覽器的工作原理

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

1、了解瀏覽器

目前使用的主流的瀏覽器:Internet Explorer,F(xiàn)irefox,Safari,Chrome瀏覽器,Opera。讓我們看看瀏覽器統(tǒng)計(jì)數(shù)據(jù)的占比:

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

讓你說(shuō)說(shuō)瀏覽器的主要功能:

  • 就是向服務(wù)器發(fā)出請(qǐng)求,在瀏覽器窗口中展示您選擇的網(wǎng)絡(luò)資源,資源一般指HTML文檔,可以是PDF,圖片或其他的類型。資源的位置由用戶使用URI(在電腦術(shù)語(yǔ)中,統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifier,URI)是一個(gè)用于標(biāo)識(shí)某一互聯(lián)網(wǎng)資源名稱的字符串)

2、瀏覽器的結(jié)構(gòu)

  • 用戶界面:包括地址欄,前進(jìn)、后退按鈕,書(shū)簽菜單等。
  • 瀏覽器引擎:在用戶界面和呈現(xiàn)引擎之間傳送指令。
  • 呈現(xiàn)引擎:負(fù)責(zé)顯示請(qǐng)求的內(nèi)容。
  • 網(wǎng)絡(luò):用于網(wǎng)絡(luò)調(diào)用,比如HTTP請(qǐng)求;其接口與平臺(tái)無(wú)關(guān),并為所有平臺(tái)提供底層實(shí)現(xiàn)。
  • 用戶界面后端:用于繪制基本的窗口小部件,比如組合框和窗口。其公開(kāi)了與平臺(tái)無(wú)關(guān)的通用接口,而在底層使用操作系統(tǒng)的用戶界面方法。
  • JavaScript解釋器:用于解析和執(zhí)行JavaScript代碼。
  • 數(shù)據(jù)存儲(chǔ):這是持久層。瀏覽器需要在硬盤(pán)上保存各種數(shù)據(jù),例如Cookie。新的HTML規(guī)范定義了“網(wǎng)絡(luò)數(shù)據(jù)庫(kù)”,這是一個(gè)完整的瀏覽器內(nèi)數(shù)據(jù)庫(kù)。

注意:Chrome瀏覽器的每個(gè)標(biāo)簽頁(yè)都分別對(duì)應(yīng)一個(gè)呈現(xiàn)引擎實(shí)例,每個(gè)標(biāo)簽頁(yè)都是一個(gè)獨(dú)立的進(jìn)程。

3、呈現(xiàn)引擎

呈現(xiàn)引擎的作用是“呈現(xiàn)”,用于在瀏覽器的屏幕上顯示請(qǐng)求的內(nèi)容。

一般情況下,呈現(xiàn)引擎可顯示HTML和xml文檔與圖片,通過(guò)插件或?yàn)g覽器擴(kuò)展程序,可以顯示其他類型的內(nèi)容。瀏覽器(Firefox,Chrome瀏覽器和Safari)是基于兩種呈現(xiàn)引擎構(gòu)建的。

Firefox使用的是Gecko,而Safari和Chrome瀏覽器使用的是WebKit(WebKit 是一種開(kāi)放源代碼呈現(xiàn)引擎)。

4、主流程

呈現(xiàn)引擎一開(kāi)始會(huì)從網(wǎng)絡(luò)層獲取請(qǐng)求文檔的內(nèi)容,其大小一般限制在8000個(gè)塊以內(nèi)。

呈現(xiàn)引擎將開(kāi)始解析HTML文檔,并將各標(biāo)記逐個(gè)轉(zhuǎn)化成“內(nèi)容樹(shù)”上的DOM節(jié)點(diǎn)。同時(shí)也會(huì)解析外部CSS文件以及樣式元素中的樣式數(shù)據(jù)。呈現(xiàn)樹(shù)構(gòu)建完后,會(huì)進(jìn)入“布局”處理階段,也就是為每個(gè)節(jié)點(diǎn)分配一個(gè)應(yīng)出現(xiàn)在屏幕上的確切坐標(biāo)。

5、解析

解析是呈現(xiàn)引擎中重要的環(huán)境,什么是解析呢?

解析文檔是指將文檔轉(zhuǎn)化成為有意義的結(jié)構(gòu),可以讓代碼理解和使用的結(jié)構(gòu)。解析得到的結(jié)構(gòu)通常是代表了文檔結(jié)構(gòu)的節(jié)點(diǎn)樹(shù),它稱為解析樹(shù)或者語(yǔ)法樹(shù)。

6、語(yǔ)法

解析是以文檔所遵循的語(yǔ)法規(guī)則為基礎(chǔ)的。解析的過(guò)程分為兩個(gè)子過(guò)程:詞法分析和語(yǔ)法分析。

什么是詞法分析呢?

詞法分析是將輸入內(nèi)容分割成大量標(biāo)記的過(guò)程,標(biāo)記(語(yǔ)言中的詞匯),構(gòu)成內(nèi)容的單位。相等于語(yǔ)言中的單詞。

什么是語(yǔ)法分析呢?

語(yǔ)法分析是應(yīng)用語(yǔ)言的語(yǔ)法規(guī)則的過(guò)程。

so,解析器一般解析工作分兩個(gè)組件處理,為詞法分析器(負(fù)責(zé)將輸入內(nèi)容分解成一個(gè)個(gè)有效標(biāo)記),解析器負(fù)責(zé)根據(jù)語(yǔ)言的語(yǔ)法規(guī)則來(lái)分析文檔的結(jié)構(gòu),來(lái)構(gòu)建解析樹(shù)。

從源文檔到解析樹(shù):Document->Lexical Analysis->Syntax Analysis->Parse Tree

解析是一個(gè)迭代的過(guò)程。

是這樣的,解析器會(huì)向詞法分析器請(qǐng)求一個(gè)新標(biāo)記,并嘗試將其與某條語(yǔ)法規(guī)則進(jìn)行匹配。如果匹配規(guī)則,解析器就會(huì)將對(duì)應(yīng)與該標(biāo)記的節(jié)點(diǎn)添加到解析樹(shù)中,然后繼續(xù)下一個(gè)。

但是如果沒(méi)有匹配的規(guī)則,解析器會(huì)將標(biāo)記存儲(chǔ)到內(nèi)部,繼續(xù)請(qǐng)求標(biāo)記,直到可與之匹配的規(guī)則,但是如果沒(méi)有直到的話,就會(huì)引發(fā)異常(文檔無(wú)效,包含語(yǔ)法錯(cuò)誤等)。

7、翻譯

解析通常是在翻譯的過(guò)程中,而翻譯是將輸入的文檔轉(zhuǎn)換為另一種形式,如編譯器將源代碼編譯成機(jī)器代碼,流程是將源代碼解析成解析樹(shù),將解析樹(shù)翻譯成機(jī)器代碼文檔。

編譯流程:Source Code -> Parsing->Parse Tree -> Translation -> Machine Code

8、解析器類型

  • 兩種基本的解析器類型:自上而下解析器,自下而上解析器
  • 自上而下就是: 解析器從語(yǔ)法的高層結(jié)構(gòu)出發(fā),嘗試從中找到匹配的結(jié)構(gòu)。
  • 自下而上就是: 解析器從低層規(guī)則出發(fā),將輸入內(nèi)容逐步轉(zhuǎn)化為語(yǔ)法規(guī)則,直至滿足高層規(guī)則。

你知道一種工具叫解析器生成器嗎,它能夠幫助你生成解析器,你只要向它提供你所使用的語(yǔ)言的語(yǔ)法,即詞匯和語(yǔ)法規(guī)則,然后就會(huì)生成相應(yīng)的解析器。

你暈了嗎?可以點(diǎn)擊這里查看:瀏覽器的工作原理:新式網(wǎng)絡(luò)瀏覽器幕后揭秘 https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/

渲染機(jī)制

瀏覽器從接收到頁(yè)面開(kāi)始到頁(yè)面顯示,這整個(gè)過(guò)程中的所有步驟,稱 關(guān)鍵渲染路徑 ,一般分為兩步:頁(yè)面內(nèi)容加載完成和頁(yè)面資源完成,分別對(duì)應(yīng)于DOMContentLoaded和Load

  • 關(guān)鍵:網(wǎng)頁(yè)的渲染過(guò)程如下,包含頁(yè)面加載和頁(yè)面渲染兩個(gè)過(guò)程。

頁(yè)面加載過(guò)程是,從服務(wù)器請(qǐng)求資源并構(gòu)建DOM樹(shù)的過(guò)程,網(wǎng)頁(yè)渲染過(guò)程指的是通過(guò)DOM樹(shù)渲染出視圖內(nèi)容。

首先 瀏覽器加載網(wǎng)頁(yè)內(nèi)容,使用HTML解釋器 將網(wǎng)頁(yè) 轉(zhuǎn)變 為一系列的 token,再根據(jù)token 構(gòu)建 dom 樹(shù), 當(dāng)一個(gè)可見(jiàn)的 dom 節(jié)點(diǎn) 插入到dom 樹(shù)時(shí),瀏覽器會(huì)構(gòu)建一個(gè)renderObject 節(jié)點(diǎn)并將其插入到 render 樹(shù)中。

Render 樹(shù)包含節(jié)點(diǎn)的樣式信息,可以簡(jiǎn)單理解為 dom + css構(gòu)成。Render樹(shù)將交由排版引擎處理,計(jì)算出每一個(gè)RenderObject 節(jié)點(diǎn)的大小和位置等信息,然后再交給由渲染引擎完成頁(yè)面的內(nèi)容繪制。

  • DOM + CSS -> Render Tree

復(fù)習(xí)一下整個(gè)關(guān)鍵渲染包括:

  • 解析HTML,生成DOM樹(shù)(DOM)
  • 解析CSS,生成CSSOM樹(shù)
  • 將DOM和CSSOM合并,生成渲染樹(shù)(Rendere-Tree)
  • 計(jì)算渲染樹(shù)的布局Layout
  • 將布局渲染到屏幕上Paint

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

那么要問(wèn)了,為什么要了解瀏覽器渲染頁(yè)面機(jī)制呢?

了解渲染機(jī)制,主要還是為了性能的優(yōu)化:

了解瀏覽器如何進(jìn)行加載,引用外部樣式文件,JS文件時(shí),將它們放到合適的位置,是瀏覽器最快的速度讓文件加載完畢;了解瀏覽器如何進(jìn)行解析,選擇最優(yōu)的寫(xiě)法,構(gòu)建DOM結(jié)構(gòu),組織CSS選擇器的時(shí)候,是為了提高瀏覽器的解析速率;了解瀏覽器如何進(jìn)行渲染,是可以減少“重繪”,“重新布局”的消耗。

那么上面一直說(shuō)了解渲染機(jī)制,出現(xiàn)的幾個(gè)基本概念,這里先弄明白:

  • DOM: Document Object Model,瀏覽器將HTML解析成樹(shù)形的數(shù)據(jù)結(jié)構(gòu)
  • CSSOM: CSS Object Model,瀏覽器將CSS解析成樹(shù)形的數(shù)據(jù)結(jié)構(gòu)
  • Render Tree: DOM和CSSOM合并生成Render Tree
  • Layout: 計(jì)算出Render Tree每個(gè)節(jié)點(diǎn)的具體位置
  • Painting: 通過(guò)顯卡,將Layout后的節(jié)點(diǎn)內(nèi)容分別呈現(xiàn)到屏幕上

當(dāng)瀏覽器獲取HTML文件后,會(huì)自上而下加載并在加載過(guò)程中進(jìn)行解析和渲染;加載就是獲取資源的過(guò)程;如果在加載過(guò)程中遇到外部的css文件和圖片,瀏覽器會(huì)另外發(fā)送一個(gè)請(qǐng)求,去獲取css文件和圖片,這個(gè)請(qǐng)求是異步的,并不會(huì)影響HTML文件的加載;但如果遇到JavaScript文件,HTML文件會(huì)掛起渲染的進(jìn)程,等待JavaScript文件加載完畢后,再繼續(xù)進(jìn)行渲染。

為什么需要等待JavaScript呢?

因?yàn)镴avaScript可能會(huì)修改dom,導(dǎo)致后面的HTML資源白白加載,需要等待JavaScript文件加載完成后,再繼續(xù)渲染,so,JavaScript文件一般寫(xiě)在底部body標(biāo)簽前的原因。

說(shuō)說(shuō)瀏覽器頁(yè)面渲染:

  • 第一步:在CSS資源還沒(méi)有請(qǐng)求回來(lái)之前,先生成DOM樹(shù);
  • 第二步:當(dāng)所有的CSS請(qǐng)求回來(lái)之后,瀏覽器按照CSS的導(dǎo)入順序,依次進(jìn)行渲染,最后生成CSSOM樹(shù);
  • 第三步:把DOM樹(shù)和CSSOM樹(shù)結(jié)合在一起,生成有樣式,有結(jié)構(gòu)的RENDER TREE渲染樹(shù);
  • 最后一步:瀏覽器按照渲染樹(shù),在頁(yè)面中進(jìn)行渲染和解析

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

由于渲染機(jī)制過(guò)于復(fù)雜,渲染模塊在在執(zhí)行過(guò)程中劃分了很多階段,通過(guò)《瀏覽器工作原理與實(shí)踐》-渲染流程上分:構(gòu)建DOM樹(shù),樣式計(jì)算,布局階段;渲染流程下分:分層,圖層繪制,柵格化(raster)操作,合成和顯示。

整個(gè)渲染流程,從HTML到DOM、樣式計(jì)算、布局、圖層、繪制、光柵化、合成和顯示。

面試一問(wèn):為什么要構(gòu)建DOM樹(shù)?

答:因?yàn)闉g覽器不能直接理解和使用HTML,so,需要將HTML轉(zhuǎn)換為瀏覽器能夠理解的結(jié)構(gòu),即是DOM樹(shù)(樹(shù)結(jié)構(gòu)一般都了解了的)。

為了了解完整的DOM樹(shù)結(jié)構(gòu),可以打開(kāi)Chrome的“開(kāi)發(fā)者工具”,或按F12,如圖下:

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

接下來(lái)要讓DOM節(jié)點(diǎn)擁有正確的樣式,這就需要樣式計(jì)算了。

樣式計(jì)算的目的是為了計(jì)算出DOM節(jié)點(diǎn)中每個(gè)元素的具體樣式:三步走

  • 把CSS轉(zhuǎn)換為瀏覽器能夠理解的結(jié)構(gòu)
  • 轉(zhuǎn)換樣式表中的屬性值,使其標(biāo)準(zhǔn)化
  • 計(jì)算出DOM樹(shù)中每個(gè)節(jié)點(diǎn)的具體樣式(涉及到CSS的繼承規(guī)則和層疊規(guī)則)

當(dāng)渲染引擎接收到CSS文本時(shí),會(huì)執(zhí)行一個(gè)轉(zhuǎn)換操作,將CSS文本轉(zhuǎn)換為瀏覽器可以理解的結(jié)構(gòu)——styleSheets。屬性值標(biāo)準(zhǔn)化的過(guò)程:將所有值轉(zhuǎn)換為渲染引擎容易理解的、標(biāo)準(zhǔn)化的計(jì)算值。

DOM元素最終計(jì)算的樣式如圖:

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

布局階段

布局:計(jì)算出DOM樹(shù)中可見(jiàn)元素的幾何位置,第一創(chuàng)建布局樹(shù)(構(gòu)建一棵只包含可見(jiàn)元素布局樹(shù)),第二布局計(jì)算。

面試問(wèn)題:CSS加載會(huì)阻塞頁(yè)面顯示嗎?

  • css加載不會(huì)阻塞DOM樹(shù)的解析
  • css加載會(huì)阻塞DOM樹(shù)的渲染
  • css加載會(huì)阻塞后面js語(yǔ)句的執(zhí)行

so,為了避免讓用戶看到長(zhǎng)時(shí)間的白屏?xí)r間,應(yīng)該提高css的加載速度。

為了防止css阻塞,引起頁(yè)面白屏,可以提高頁(yè)面加載速度

  • 使用cdn
  • 對(duì)css進(jìn)行壓縮
  • 合理利用緩存
  • 減少http請(qǐng)求,將多個(gè)css文件合并

面試問(wèn)題:下載CSS文件阻塞了,會(huì)阻塞DOM樹(shù)的合成嗎?會(huì)阻塞頁(yè)面的顯示嗎?

答:不會(huì)阻塞dom樹(shù)構(gòu)建的,因?yàn)镠TML轉(zhuǎn)化為dom樹(shù)的過(guò)程,發(fā)現(xiàn)文件請(qǐng)求會(huì)交給網(wǎng)絡(luò)進(jìn)程去請(qǐng)求對(duì)應(yīng)文件,渲染進(jìn)程繼續(xù)解析HTML。

會(huì)阻塞頁(yè)面的顯示,當(dāng)計(jì)算樣式的時(shí)候需要等待css文件的資源進(jìn)行層疊樣式,資源阻塞了,會(huì)進(jìn)行等待,直到網(wǎng)絡(luò)超時(shí),network報(bào)出錯(cuò)誤,渲染進(jìn)程繼續(xù)層疊樣式計(jì)算。

說(shuō)了DOM生成、樣式計(jì)算和布局三個(gè)階段,接下來(lái)說(shuō)說(shuō)后面的階段。

說(shuō)說(shuō)分層:渲染引擎給頁(yè)面分了很多圖層,這些圖層按照一定順序疊加在一起,就形成了最終的頁(yè)面。完成圖層樹(shù)的構(gòu)建后,渲染引擎會(huì)對(duì)圖層樹(shù)中的每個(gè)圖層進(jìn)行繪制,為圖層繪制。然后進(jìn)行柵格化(raster)操作(繪制列表只是用來(lái)記錄繪制順序和繪制指令的列表,而實(shí)際上繪制操作是由渲染引擎中的合成線程來(lái)完成的),最后合成與顯示。

頁(yè)面渲染機(jī)制圖如下:

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

渲染過(guò)程圖如下:

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

瀏覽器渲染過(guò)程如下:

 

面試官不講碼德,一上來(lái)就問(wèn)我Chrome瀏覽器的渲染原理

這里重點(diǎn)要說(shuō)(重新說(shuō)一下)兩個(gè)概念回流和重繪:

  • 當(dāng)render tree中的一部分因?yàn)樵氐囊?guī)模尺寸,布局,隱藏等改變而需要重新構(gòu)建。這就稱為回流(reflow)。
  • 每個(gè)頁(yè)面至少需要一次回流,就是在頁(yè)面第一次加載的時(shí)候。
  • 在回流的時(shí)候,瀏覽器會(huì)使渲染樹(shù)中受到影響的部分失效,并重新構(gòu)造這部分渲染樹(shù),完成回流后,瀏覽器會(huì)重新繪制受影響的部分到屏幕中,該過(guò)程成為重繪。
  • 當(dāng)render tree中的一些元素需要更新屬性,而這些屬性只是影響元素的外觀,風(fēng)格,而不會(huì)影響布局的,比如background-color。就叫稱為重繪。

本篇文章的最后,留下一道思考題:減少重繪/重排能優(yōu)化Web性能嗎?如何能減少重繪/重排?

參考資料

  • https://www.cnblogs.com/jianjie/p/13229789.html
  • https://zhuanlan.zhihu.com/p/26105913
  • 瀏覽器工作原理與實(shí)踐
  • https://segmentfault.com/a/1190000018811208

總結(jié)

以上就是今天要講的內(nèi)容,本文簡(jiǎn)單介紹了Chrome瀏覽器的渲染原理流程。如果你覺(jué)得這篇文章對(duì)你有幫助的話,也歡迎把它分享給更多的朋友。

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2021-03-25 08:45:15

MySQL

2021-04-06 06:07:37

ZAB 協(xié)議原子廣播協(xié)議網(wǎng)絡(luò)協(xié)議

2020-11-06 15:20:45

瀏覽器前端架構(gòu)

2013-05-23 16:01:56

瀏覽器

2013-06-14 13:56:29

瀏覽器渲染原理

2021-12-02 08:19:06

MVCC面試數(shù)據(jù)庫(kù)

2021-01-06 08:34:21

Spring核心組件

2020-11-24 07:48:32

React

2021-08-10 18:36:02

Express原理面試

2020-10-20 09:12:57

axios核心原理

2022-05-24 08:03:28

InnoDBMySQL數(shù)據(jù)

2022-08-30 09:01:11

瀏覽器渲染前端

2021-05-20 08:54:16

Go面向對(duì)象

2020-04-16 08:22:11

HTTPS加解密協(xié)議

2010-08-23 15:06:52

發(fā)問(wèn)

2022-08-27 13:49:36

ES7promiseresolve

2021-08-28 09:06:11

Dubbo架構(gòu)服務(wù)

2021-05-19 08:17:35

秒殺場(chǎng)景高并發(fā)

2021-06-03 08:55:54

分布式事務(wù)ACID

2021-03-11 08:51:00

存儲(chǔ)面試位置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)