日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端性能优化总结

發(fā)布時(shí)間:2023/11/29 HTML 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端性能优化总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

# 前端性能優(yōu)化

網(wǎng)頁生成過程:

  • HTML代碼轉(zhuǎn)化成DOM
  • CSS代碼轉(zhuǎn)化成CSSOM(CSS Object Model)
  • 結(jié)合DOM和CSSOM,生成一棵渲染樹(包含每個(gè)節(jié)點(diǎn)的視覺信息)
  • 生成布局(layout),即將所有渲染樹的所有節(jié)點(diǎn)進(jìn)行平面合成
  • 將布局繪制(paint)在屏幕上
  • 渲染:耗時(shí)的第四步(生成布局\flow)和第五步(繪制\paint)

    重排(reflow)和重繪(repaint)

    • 重繪不一定重排(例如僅改變文字顏色)
    • 重排一定重繪(例如改變文字位置)

    對(duì)于性能的影響

    將CSS的讀操作和寫操作分離

    提高性能的九個(gè)技巧

  • 同上條。不要在兩個(gè)讀操作之間,加入一個(gè)寫操作。
  • 如果某個(gè)樣式是通過重排得到的,那么最好緩存結(jié)果。
  • 不要一條條地改變樣式,而要通過改變class,或者csstext屬性,一次性地改變樣式。
  • 盡量使用離線DOM,而不是真實(shí)的DOM來改變?cè)貥邮健?
    • 例如操作Document Fragment對(duì)象,完成后再把這個(gè)對(duì)象加入DOM。
    • 例如使用 cloneNode() 方法,在克隆的節(jié)點(diǎn)上進(jìn)行操作,然后再用克隆的節(jié)點(diǎn)替換原始節(jié)點(diǎn)。
  • 先將元素設(shè)為display: none(需要1次重排和重繪),然后對(duì)這個(gè)節(jié)點(diǎn)進(jìn)行100次操作,最后再恢復(fù)顯示(需要1次重排和重繪)。這樣就用兩次重新渲染,取代了可能高達(dá)100次的重新渲染。
  • position屬性為absolute或fixed的元素,重排的開銷會(huì)比較小,因?yàn)椴挥每紤]它對(duì)其他元素的影響。
  • 只在必要的時(shí)候,才將元素的display屬性為可見,因?yàn)椴豢梢姷脑夭挥绊懼嘏藕椭乩L。(visibility : hidden的元素只對(duì)重繪有影響,不影響重排。)
  • 使用虛擬DOM的腳本庫,比如React等。
  • 使用 window.requestAnimationFrame()、window.requestIdleCallback() 這兩個(gè)方法調(diào)節(jié)重新渲染(詳見后文)。
  • window.requestAnimationFrame()*

    可以將某些代碼放到下一次重新渲染時(shí)執(zhí)行。

    window.requestIdleCallback()*

    指定只有當(dāng)一幀的末尾有空閑時(shí)間,才會(huì)執(zhí)行回調(diào)函數(shù)。

    轉(zhuǎn)載于:https://www.cnblogs.com/amberheart/p/9544459.html

    總結(jié)

    以上是生活随笔為你收集整理的前端性能优化总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。