国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

前端性能優(yōu)化之--頁(yè)面渲染優(yōu)化全面解析

gghyoo / 1992人閱讀

摘要:下面我們撇開(kāi)網(wǎng)絡(luò)方面的優(yōu)化,只分析靜態(tài)資源方面的優(yōu)化。不過(guò),也會(huì)阻止的構(gòu)建和延緩網(wǎng)頁(yè)渲染。未優(yōu)化正常加載優(yōu)化后異步加載根據(jù)上面的分析,我們可以清楚的認(rèn)識(shí)到,非必要優(yōu)先加載的,選擇異步加載是最優(yōu)選擇。

為什么做優(yōu)化
經(jīng)典問(wèn)題:白屏?xí)r間過(guò)長(zhǎng),用戶體驗(yàn)差
產(chǎn)生的原因:網(wǎng)絡(luò)問(wèn)題、關(guān)鍵渲染路徑(CRP)問(wèn)題
怎么做優(yōu)化
如何做好優(yōu)化呢,網(wǎng)上隨便一搜,就有很多優(yōu)化總結(jié),無(wú)非就是網(wǎng)絡(luò)優(yōu)化、靜態(tài)資源(html、js、css、image)優(yōu)化。下面我們撇開(kāi)網(wǎng)絡(luò)方面的優(yōu)化,只分析靜態(tài)資源方面的優(yōu)化。而靜態(tài)資源的優(yōu)化關(guān)鍵在于你要去深入理解關(guān)鍵渲染路徑(CRP)的運(yùn)行原理和規(guī)則。
一、了解瀏覽器關(guān)鍵渲染路徑(html加載過(guò)程)
面試必問(wèn):
1、描述一下從url輸入到頁(yè)面展示的全過(guò)程?
2、描述一下html加載全過(guò)程?
如何準(zhǔn)確回答類(lèi)似上面的問(wèn)題呢,那么我們就需要全面了解瀏覽器關(guān)鍵渲染路徑了,了解了工作原理,我們才能更好的更深入的理解靜態(tài)資源的優(yōu)化方案

渲染的關(guān)鍵路徑分為以下五步

構(gòu)建DOM樹(shù)

構(gòu)建過(guò)程:Bytes->Characters->Tokens->Nodes->Dom

構(gòu)建CSSOM樹(shù)

構(gòu)建過(guò)程:Bytes->Characters->Tokens->Nodes->CSSOM

合并DOM樹(shù)和CSSOM樹(shù)構(gòu)建渲染樹(shù)

1、過(guò)濾掉不可見(jiàn)節(jié)點(diǎn)(腳本標(biāo)記、元標(biāo)記)
2、過(guò)濾掉樣式隱藏的節(jié)點(diǎn)(display:none)

根據(jù)渲染樹(shù)來(lái)布局,計(jì)算節(jié)點(diǎn)的幾何信息(layout)

將各個(gè)節(jié)點(diǎn)繪制在屏幕上(paint)

首先從上面的五步中看出,只有當(dāng)DOM樹(shù)和CSSOM樹(shù)都構(gòu)建完成之后才可以進(jìn)行渲染樹(shù)的構(gòu)建,所以這兩步是對(duì)整體渲染起阻塞作用的,當(dāng)然了DOM樹(shù)是必須的,它提供給頁(yè)面內(nèi)容,而CSSOM的必要性并不是太明顯,所以在CSSOM構(gòu)建的過(guò)程中可以做一些優(yōu)化。在做優(yōu)化前先要了解這幾個(gè)知識(shí)點(diǎn)。

1、默認(rèn)情況下,CSS是阻塞渲染的資源
2、我們可以通過(guò)媒體查詢(xún)和媒體類(lèi)型把一部分CSS標(biāo)記為不阻塞渲染
(媒體查詢(xún)的不足就是會(huì)嚴(yán)重影響關(guān)鍵渲染路徑的性能)



3、瀏覽器**會(huì)下載所有CSS資源**、無(wú)論它阻塞還是不阻塞
根據(jù)上面三個(gè)知識(shí)點(diǎn),會(huì)讓你很清晰的知道,CSS優(yōu)化可以做的事情就是,根據(jù)不同CSS使用場(chǎng)景和優(yōu)先級(jí)的不同進(jìn)行不阻塞標(biāo)記。
如果是必要的CSS就請(qǐng)盡早的加載(1、引用位置靠前,2、減小文件體積)到客戶端,這樣就減少了對(duì)首次渲染的阻塞
二、javascript對(duì)渲染的影響和降低影響的策略
首先我們來(lái)討論下javascript。它可以修改網(wǎng)頁(yè)的方方面面,內(nèi)容、樣式、以及響應(yīng)用戶的交互。不過(guò),javascript也會(huì)阻止DOM的構(gòu)建和延緩網(wǎng)頁(yè)渲染。下面我們來(lái)了解一下javascript和DOM、CSSOM的依賴(lài)關(guān)系。

javascript能修改內(nèi)容和樣式

無(wú)論(內(nèi)聯(lián)javascript還是外部javascript文件)都會(huì)阻止DOM的構(gòu)建

DOM構(gòu)建過(guò)程中如果遇到(非異步加載async)的javascript標(biāo)簽,瀏覽器將會(huì)終止DOM的構(gòu)建,立即執(zhí)行javascript。
這就是為什么非異步執(zhí)行的javascript要放在尾部或者將可執(zhí)行代碼要放在DOMContentLoaded回調(diào)中?
因?yàn)槿绻搄avascript代碼操作了未構(gòu)建完的DOM節(jié)點(diǎn)就會(huì)因?yàn)闊o(wú)法獲取該節(jié)點(diǎn)而無(wú)法執(zhí)行響應(yīng)的操作。

CSSOM的構(gòu)建影響javascript的執(zhí)行

如果在瀏覽器尚未完成CSSOM的下載和構(gòu)建時(shí),去運(yùn)行javascript腳本,那么瀏覽器會(huì)延遲腳本的執(zhí)行和DOM的構(gòu)建,直至完成CSSOM的下載和構(gòu)建。可以這樣理解,當(dāng)出現(xiàn)非異步加載的javascript時(shí),CSSOM構(gòu)建完成時(shí)間是早于javascript的執(zhí)行,兩者早于DOMContentloaded(即DOM構(gòu)建徹底完成)。

未優(yōu)化--javascript正常加載

優(yōu)化后--javascript異步加載

根據(jù)上面的分析,我們可以清楚的認(rèn)識(shí)到,非必要優(yōu)先加載的js,選擇異步加載是最優(yōu)選擇。
三、image對(duì)首屏渲染的影響
圖像不會(huì)阻止首屏的渲染,但是為了增加用戶體驗(yàn)我們應(yīng)該考慮加載適當(dāng)大小的圖片,加速圖片的呈現(xiàn)。
如何評(píng)估關(guān)鍵渲染路徑

前面的內(nèi)容讓我們了解了關(guān)鍵路徑渲染的基本原理和可能優(yōu)化的機(jī)會(huì),下面我們就需要使用一些工具,幫助我們?nèi)ピu(píng)估現(xiàn)有頁(yè)面的CRP性能。

測(cè)試工具:Lighthouse 可以快速測(cè)試你的網(wǎng)頁(yè),并提供性能報(bào)告

監(jiān)控工具:Nivigation Timing Api 設(shè)置你的代碼,實(shí)時(shí)監(jiān)控用戶使用過(guò)程中的性能。

總結(jié)
javascript阻止DOM構(gòu)建(DOMCommentLoaded觸發(fā)被延遲),css的下載和完成阻止javascript的執(zhí)行。在沒(méi)有javascript或者只含有異步j(luò)avascript的頁(yè)面中,DOM的構(gòu)建和CSSOM的構(gòu)建互不影響。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/95232.html

相關(guān)文章

  • 前端性能優(yōu)化--頁(yè)面渲染優(yōu)化全面解析

    摘要:下面我們撇開(kāi)網(wǎng)絡(luò)方面的優(yōu)化,只分析靜態(tài)資源方面的優(yōu)化。不過(guò),也會(huì)阻止的構(gòu)建和延緩網(wǎng)頁(yè)渲染。未優(yōu)化正常加載優(yōu)化后異步加載根據(jù)上面的分析,我們可以清楚的認(rèn)識(shí)到,非必要優(yōu)先加載的,選擇異步加載是最優(yōu)選擇。 為什么做優(yōu)化 經(jīng)典問(wèn)題:白屏?xí)r間過(guò)長(zhǎng),用戶體驗(yàn)差產(chǎn)生的原因:網(wǎng)絡(luò)問(wèn)題、關(guān)鍵渲染路徑(CRP)問(wèn)題 怎么做優(yōu)化 如何做好優(yōu)化呢,網(wǎng)上隨便一搜,就有很多優(yōu)化總結(jié),無(wú)非就是網(wǎng)絡(luò)優(yōu)化、靜態(tài)資源(h...

    MadPecker 評(píng)論0 收藏0
  • 前端性能優(yōu)化--頁(yè)面渲染優(yōu)化全面解析

    摘要:下面我們撇開(kāi)網(wǎng)絡(luò)方面的優(yōu)化,只分析靜態(tài)資源方面的優(yōu)化。不過(guò),也會(huì)阻止的構(gòu)建和延緩網(wǎng)頁(yè)渲染。未優(yōu)化正常加載優(yōu)化后異步加載根據(jù)上面的分析,我們可以清楚的認(rèn)識(shí)到,非必要優(yōu)先加載的,選擇異步加載是最優(yōu)選擇。 為什么做優(yōu)化 經(jīng)典問(wèn)題:白屏?xí)r間過(guò)長(zhǎng),用戶體驗(yàn)差產(chǎn)生的原因:網(wǎng)絡(luò)問(wèn)題、關(guān)鍵渲染路徑(CRP)問(wèn)題 怎么做優(yōu)化 如何做好優(yōu)化呢,網(wǎng)上隨便一搜,就有很多優(yōu)化總結(jié),無(wú)非就是網(wǎng)絡(luò)優(yōu)化、靜態(tài)資源(h...

    gaomysion 評(píng)論0 收藏0
  • 前端性能優(yōu)化

    摘要:端優(yōu)談?wù)勱P(guān)于前端的緩存的問(wèn)題我們都知道對(duì)頁(yè)面進(jìn)行緩存能夠有利于減少請(qǐng)求發(fā)送,從而達(dá)到對(duì)頁(yè)面的優(yōu)化。而作為一名有追求的前端,勢(shì)必要力所能及地優(yōu)化我們前端頁(yè)面的性能。這種方式主要解決了淺談前端中的過(guò)早優(yōu)化問(wèn)題過(guò)早優(yōu)化是萬(wàn)惡之源。 優(yōu)化向:?jiǎn)雾?yè)應(yīng)用多路由預(yù)渲染指南 Ajax 技術(shù)的出現(xiàn),讓我們的 Web 應(yīng)用能夠在不刷新的狀態(tài)下顯示不同頁(yè)面的內(nèi)容,這就是單頁(yè)應(yīng)用。在一個(gè)單頁(yè)應(yīng)用中,往往只有一...

    Dean 評(píng)論0 收藏0
  • 前端性能優(yōu)化常用總結(jié)

    摘要:前言對(duì)于前端的性能話題,從來(lái)都沒(méi)有斷絕過(guò)。作為一個(gè)前端開(kāi)發(fā)者,性能是我們關(guān)注的指標(biāo)。前端發(fā)展以來(lái),優(yōu)化方式,琳瑯滿目,有雅虎軍規(guī)等。所以,接下來(lái)我會(huì)從三個(gè)方面就前端性能進(jìn)行總結(jié)網(wǎng)絡(luò)方面操作及渲染方面數(shù)據(jù)方面。 前言 對(duì)于前端的性能話題,從來(lái)都沒(méi)有斷絕過(guò)。因?yàn)檫@個(gè)東西沒(méi)有最好,只有更好。而且往往也是業(yè)務(wù)的繁雜程度去決定優(yōu)化程度的。作為一個(gè)前端開(kāi)發(fā)者,性能是我們關(guān)注的指標(biāo)。它直接影響著我們...

    oliverhuang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

gghyoo

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<