成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談如何提升JavaScript中DOM的運行速度

開發 后端
在Web開發中,JavaScript的一個很重要的作用就是對DOM進行操作,可你知道么?對DOM的操作是非常昂貴的,因為這會導致瀏覽器執行回流操作,而執行了過多的回流操作,你就會發現自己的網站變得越來越慢了,我們應該盡可能的減少DOM操作。本文將給出了一些指導性原則,比如在什么時候應該對DOM可以進行什么樣的操作等。

我們都知道,DOM操作的效率是很低的,而且不是一般的慢,而且這也是引發性能問題的常見問題之一。為什么會慢呢?因為對DOM的修改為影響網頁的用戶界面,重繪頁面是一項昂貴的操作。太多的DOM操作會導致一系列的重繪操作,為了確保執行結果的準確性,所有的修改操作是按順序同步執行的。我們稱這個過程叫做回流(reflow),同時這也是最昂貴的瀏覽器操作之一。回流操作主要會發生在幾種情況下:

◆當對DOM節點執行新增或者刪除操作時。

◆動態設置一個樣式時(比如element.style.width="10px")。

◆當獲取一個必須經過計算的尺寸值時,比如訪問offsetWidth、clientHeight或者其他需要經過計算的CSS值(在兼容DOM的瀏覽器中,可以通過getComputedStyle函數獲取;在IE中,可以通過currentStyle屬性獲取)。
解決問題的關鍵,就是限制通過DOM操作所引發回流的次數。大部分瀏覽器都不會在JavaScript的執行過程中更新DOM。相應的,這些瀏覽器將對對DOM的操作放進一個隊列,并在JavaScript腳本執行完畢以后按順序一次執行完畢。也就是說,在JavaScript執行的過程中,用戶不能和瀏覽器進行互動,直到一個回流操作被執行。( 失控腳本對話框 會觸發回流操作,因為他執行了一個中止JavaScript執行的操作,此時會對用戶界面進行更新)

如果要減少由于DOM修改帶來的回流操作,有兩個基本的方法。***個就是在對當前DOM進行操作之前,盡可能多的做一些準備工作。一個經典的例子就是向document對象中添加很多DOM節點:

  1. for (var i=0; i < items.length; i++){  
  2.     var item = document.createElement("li");  
  3.     item.appendChild(document.createTextNode("Option " + i);  
  4.     list.appendChild(item);  
  5. }  

這段代碼的效率是很低的,因為他在每次循環中都會修改當前DOM結構。為了提高性能,我們需要將這個次數降到***,對于這個案例來說,***的辦法是建立一個文檔碎片(document fragment),作為那些已創建元素元素的臨時容器,***一次將容器的內容直接添加到父節點中:

  1. var fragment = document.createDocumentFragment();  
  2. for (var i=0; i < items.length; i++){  
  3.     var item = document.createElement("li");  
  4.     item.appendChild(document.createTextNode("Option " + i);  
  5.     fragment.appendChild(item);  
  6. }  
  7. list.appendChild(fragment); 

經過調整的代碼,只會修改一次當前DOM的結構,就在***一行,而在這之前,我們用文檔碎片來保存那些中間結果。因為文檔碎片沒有任何可見內容,所以這類修改不會觸發回流操作。實際上,文檔碎片也不能被添加到DOM中,我們需要將它作為參數傳給appendChild函數,而實際上添加的不是文檔碎片本身,而是它下面的所有子元素。

【編輯推薦】

  1. JavaScript中關于 Cookie的詳細介紹
  2. JavaScript中 confirm,alert,prompt的用法
  3. 基于JavaScript的REST 客戶端框架
  4. 如何優化JavaScript腳 本的性能
  5. 用Javascript連接 Access數據庫的方法
責任編輯:張燕妮 來源: blueidea
相關推薦

2024-09-27 08:35:33

數組JavaScript性能

2011-01-12 11:22:24

微軟認證

2021-11-03 06:28:21

Python運行速度開發

2009-08-11 09:10:26

Windows 7系統提速

2022-02-23 10:54:37

電腦卡頓硬件

2018-08-02 16:17:34

Python 開發編程語言

2018-06-27 09:00:00

Linux運行速度CPU信息

2020-12-15 06:44:14

程序運行速度

2010-04-12 10:01:43

Windows 7運行速度

2016-02-22 09:27:18

2011-05-30 13:28:00

PHP

2009-03-29 09:47:24

蘋果Iphone移動OS

2012-10-24 09:40:46

網絡優化系統優化

2020-05-21 16:19:43

iOS 13.5蘋果運行速度

2009-09-12 09:43:29

Windows 7系統優化

2013-07-08 11:16:05

Windows 7

2010-09-08 16:50:11

JavaScriptDOM操作

2024-02-22 08:37:28

NodejsJavaScript運行

2010-01-20 13:19:01

VB.NET錯誤處理

2022-12-20 11:20:07

PeaZip 8開源壓縮軟件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区三区 | www.伊人.com | 久久久久久久久淑女av国产精品 | 日韩久久久久久 | 永久精品| 亚州精品天堂中文字幕 | 美女视频一区 | 福利视频网 | 日韩精品视频在线免费观看 | 日韩国产在线 | www国产成人免费观看视频 | 涩涩视频在线观看 | 国内精品久久久久 | 伊人网影院 | 亚洲在线一区 | 国产网站在线 | 中文字幕亚洲欧美 | av黄色在线观看 | 国产精品精品久久久 | 精品一区二区久久久久久久网站 | 91色网站 | 久久久久久免费看 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 国产精品视频一区二区三区 | 日韩中文久久 | 久久久国产精品网站 | 国产在视频一区二区三区吞精 | 日韩久久久久久 | 高清国产午夜精品久久久久久 | 欧美男人天堂 | 99精品一区 | 中文字幕成人av | 日本久久久影视 | 国产成人综合一区二区三区 | 亚洲一二三区精品 | 美女毛片免费看 | 欧美日韩精品一区二区三区四区 | 日韩不卡视频在线观看 | 在线观看国产精品视频 | 一区二区三区精品视频 | 免费久久精品 |