前端性能優(yōu)化(一)——DOM操作與重繪重排

DOM操作

使用js操作DOM的代價(jià)是昂貴的,有一個(gè)貼切的比喻,DOM與ECMScript就像兩座小島,而他們之間由一個(gè)收費(fèi)的橋梁連接,ECMScript每次訪問DOM都要“收費(fèi)”。
所以DOM操作的性能優(yōu)化有兩點(diǎn)技巧:

  1. 將運(yùn)算盡量放在ECMScript一端,減少DOM操作
  2. 對(duì)DOM對(duì)象進(jìn)行緩存
重繪與重排

當(dāng)DOM中的元素幾何屬性發(fā)生變化時(shí),就會(huì)發(fā)生重排,重排一定會(huì)觸發(fā)重繪;當(dāng)元素只是發(fā)生樣式變化時(shí),只會(huì)觸發(fā)重繪。
重排的代價(jià)是非常昂貴的。
所以應(yīng)該盡量避免重排的發(fā)生:

  1. 對(duì)同一DOM元素的操作盡量寫在一起,最小化重排的次數(shù)
  2. 不要在會(huì)引起重排的語句中穿插需要返回最新布局信息的語句,比如offsetTop、scrollTop、clientTop、getComputedStyle等
  3. 使用fragment元素,批量操作DOM元素時(shí)使之脫離文檔流,操作完之后再一次性加入文檔
  4. 將需要多次觸發(fā)重排的元素的position設(shè)置為absolute或fixed,以避免觸發(fā)其他元素的重排
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 翻譯自:高性能Javascript 第三章Dom操作是昂貴的,它通常是web應(yīng)用的性能瓶頸。這篇文章討論Dom操作...
    Addy_Zhou閱讀 3,159評(píng)論 0 5
  • 一、瀏覽器渲染頁過程描述 1、瀏覽器解析html源碼,然后創(chuàng)建一個(gè)DOM樹。 在DOM樹中,每一個(gè)HTML標(biāo)簽都有...
    Cathy_Liu閱讀 820評(píng)論 0 9
  • 友情提醒:這篇我都覺得有點(diǎn)長(zhǎng)...可能會(huì)占用你10+分鐘,沒有這么多時(shí)間的你可以直接去文末看小姐結(jié)。 用腳本進(jìn)行D...
    kyrieliu閱讀 993評(píng)論 0 1
  • 在web應(yīng)用中,DOM操作一直屬于是最常見的性能瓶頸,優(yōu)化DOM操作就可以大幅度提升應(yīng)用的速度,現(xiàn)今火熱的Reac...
    SLEBEE閱讀 4,305評(píng)論 0 4
  • 墨雪在寫完后,就急忙的拿給天衣看了。這時(shí),爺爺他們也向前圍了過來。只見,那黃白的紙上寫著“這是德水!也就是今天...
    Pan龍騰閱讀 194評(píng)論 0 0

友情鏈接更多精彩內(nèi)容