dom 為什麼這麼慢?
當我們用 js 去操作 dom 時,本質上是 js 引擎和渲染引擎之間進行了「跨界交流」。這個「跨界交流」的實現並不簡單,它依賴了橋接介面作為「橋梁」(如下圖)。
過「橋」要收費——這個開銷本身就是不可忽略的。我們每操作一次 dom(不管是為了修改還是僅僅為了訪問其值),都要過一次「橋」。過「橋」的次數一多,就會產生比較明顯的效能問題。因此「減少 dom 操作」的建議,並非空穴來風。
對 dom 的修改引發樣式的更迭:
當我們對 dom 的修改會引發它外觀(樣式)上的改變時,就會觸發回流或重繪。
這個過程本質上還是因為我們對 dom 的修改觸發了渲染樹(render tree)的變化所導致的。
回流:當我們對 dom 的修改引發了 dom 幾何尺寸的變化(比如修改元素的寬、高或隱藏元素等)時,瀏覽器需要重新計算元素的幾何屬性(其他元素的幾何屬性和位置也會因此受到影響),然後再將計算的結果繪製出來。這個過程就是回流(也叫重排)。
重繪:當我們對 dom 的修改導致了樣式的變化、卻並未影響其幾何屬性(比如修改了顏色或背景色)時,瀏覽器不需重新計算元素的幾何屬性、直接為該元素繪製新的樣式(跳過了上圖所示的回流環節)。這個過程叫做重繪。
由此我們可以看出,重繪不一定導致回流,回流一定會導致重繪。硬要比較的話,回流比重繪做的事情更多,帶來的開銷也更大。但這兩個說到底都是吃效能的,所以都不是什麼善茬。我們在開發中,要從**層面出發,盡可能把回流和重繪的次數最小化。
前端效能優化 CDN的原理
典型的cdn系統由下面三個部分組成 最基本的工作單元就是cache裝置,cache 邊緣cache 負責直接響應終端使用者的訪問請求,把快取在本地的內容快速地提供給使用者。同時cache還負責與源站點進行內容同步,把更新的內容以及本地沒有的內容從源站點獲取並儲存在本地。cache裝置的數量 規模 總...
前端效能優化
1.減少http請求次數 css sprites 在國內很多人叫css精靈,是一種網頁應用處理方式。它允許你將乙個頁面涉及到的所有零星都包含到一張大圖中去,這樣一來,當訪問該頁面時,載入的就不會像以前那樣一幅一幅地慢慢顯示出來了。對於當前網路流行的速度而言,不高於200kb的單張的所需載入時間基本是...
前端效能優化
在開發好頁面後,如何讓頁面更好更快的執行 從前端的角度來看,效能可以分為兩個方向 從使用者角度來看,乙個是頁面載入的很快,另乙個是頁面使用起來非常流暢 輸入了url 瀏覽器開始解析 查詢本地快取 dns解析 建立連線 伺服器處理 伺服器響應 客戶端收到響應 解析html 然後開始渲染頁面 使用者可以...