国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

30條技巧提高Web程序執(zhí)行效率

2019-11-15 02:28:19
字體:
供稿:網(wǎng)友

30條技巧提高Web程序執(zhí)行效率

  1. 盡量避免使用DOM。當(dāng)需要反復(fù)使用DOM時,先把對DOM的引用存到javaScript本地變量里再使用。使用設(shè)置innerHTML的方法來替換document.createElement/appendChild()方 法。
  2. eval()有問題,new Fuction()構(gòu)造函數(shù)也是,盡量避免使用它們。
  3. 拒絕使用with語句。 它會導(dǎo)致當(dāng)你引用這個變量時去額外的搜索這樣的一個命名空間,with里的代碼在編譯時期是完全未知的。
  4. 使用for()循環(huán)替代for…in循 環(huán)。因為for…in循環(huán)在開始循環(huán)之前需要Script引擎創(chuàng)建一個含有所有可循環(huán)屬性的 List,需要多檢查一次。
  5. 把try-catch語句放在循環(huán)外面,不要放在循環(huán)里面,因為異常是很少發(fā)生的,放在外面避免每次都要執(zhí)行 它們。
  6. 甚至圣經(jīng)里都提到過這個 – 不要全局的。全局變量的生命周期貫穿整個腳本的生命周期,而本地變量的存在范圍隨著本地命名空間的銷毀而消失。當(dāng)在函數(shù)或其它地方引用一個全局變量時,腳 本引擎需要搜索整個全局命名空間。
  7. fullName += 'John'; fullName += 'Holdings';執(zhí)行速度快于fullName += 'John' + 'Holdings';
  8. 如果你需要把多個字符串連接起來,最好是把他們做成一個數(shù)組,然后調(diào)用join()方法實現(xiàn)這個操作。這種方式在生成HTML片段時尤其 有效。
  9. 對于簡單的任務(wù),最好使用基本操作方式來實現(xiàn),而不是使用函數(shù)調(diào)用實現(xiàn)。例如val1 < val2 ? val1 : val2;執(zhí)行速度快于Math.min(val1, val2);,類似的,myArr.push(newEle);慢于myArr[myArr.length] = newEle;
  10. 將函數(shù)的引用作為參數(shù)傳遞到setTimeout()和setInterval()里優(yōu)于將函數(shù)名作為字符串參數(shù)傳遞(硬編碼)。例如,setTimeout(“someFunc()”, 1000)執(zhí)行效率慢于setTimeout(someFunc, 1000)
  11. 當(dāng)進行遍歷操作時避免使用DOM操作。通過像getElementsByTagName()這 種方法得到的DOM元素隊列都是動態(tài)的;有可能在你還沒有對它遍歷完成時,它已經(jīng)被改變。這有可能導(dǎo)致死循環(huán)。
  12. 當(dāng)你對對象的成員(屬性或方法)進行反復(fù)操作時,先存儲對它們的引用。例如var getTags = document.getElementsByTagName; getTags(‘div’);
  13. 在任何的代碼段里,在局部變量范圍外存放一個這個局部變量的引用。例如 function foo(arr) { var a = ‘something’;

    //變量 ‘a’ 對于下面的一段就是范圍外變量,這個變量的引用在很多情況下會有用處。 for (var i = 0, j = a, loopLen = arr.length; i < loopLen; i++) { //do something } }

  14. for(var i=0; i < someArray.length; i++) {…}的執(zhí)行效率慢于for (var i=0, loopLen=someArray.length; i<loopLen; i++) {…}。
  15. 在HTTP頭信息里加入緩存控制過期和最大存活時間標(biāo)記。
  16. 優(yōu)化CSS。要使用<link>方式,而不要使用@import方式。
  17. 使用CSS技術(shù)來優(yōu)化圖片資源
  18. 用GZip方式壓縮 .js 和 .css 文件。如果你使用的是Apache,在 .htaccess 里設(shè)置壓縮方式,你的HTML, xml 和 JSON 也同時會被壓縮。 AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-Javascript application/json
  19. 使用JavaScript壓縮工具。除了使用YUI和JSMin外,你還可以試一試Google Closure。
  20. 優(yōu)化每個頁面上的各種資源,把它們拆分到各個子域上,這么它們就能夠并行下載。
  21. 將CSS樣式表放在頁面的最頂端,這樣能方便包括IE在內(nèi)的瀏覽器進行解析。
  22. 盡量將DOM結(jié)構(gòu)保持的越簡單越好。DOM的體積會影響相關(guān)的操作效率,像查找, 遍歷,DOM改動都有影響。document.getElementsByTagName(‘*’).length這 個值越小越好。
  23. 注意你使用的選擇器。例如,如果你想獲取一個ul下的直接子元素,使用jQuery(“ul > li”)而不要使用jQuery(“ul li”)
  24. 當(dāng)切換元素的可見性時(display),請記住:element.css({display:none})的 速度快于element.hide() 和 element.addClass(‘myHiddenClass’)。 除非在一個循環(huán)里,我選擇element.addClass(‘myHiddenClass’), 這樣會使代碼更簡潔 – 不要使用 inline CSS 和 JavaScript。
  25. 當(dāng)你使用完對DOM的引用變量后,要把它置為NULL。
  26. 使用Ajax時,GET的執(zhí)行效率高于POST。所以要盡量使用 GET 方式。只是要注意一點,IE只允許你用GET傳送2K的數(shù)據(jù)。
  27. 小心使用腳本動畫。沒有硬件的支持,動畫會執(zhí)行的很慢。盡量避免使用那些沒有實際價值的動畫效果。
  28. 如果你的background-image對于這個圖片的容器太小的話,請避免使 用background-repeat。如果你的背景圖片需要來回填充很多次才能充滿背景,那么將background-repeat屬性設(shè)置成background-image 和repeat-x 或 repeat-y來 達到填充背景的效果的做法是不明智的,這種填充方式的效率特別的低。你應(yīng)該嘗試使用一個足夠大的圖片來做background-image并 且使用background-repeat: no-repeat。
  29. 布局時不要使用<table>。 <table>在瀏覽器完全把它畫出來之前需要反復(fù)繪制好幾次。因為DOM中<table>是很少見的一種之后輸出的會影響之前輸出的顯示效果的元素。對于表格數(shù)據(jù)來說,你可 以使用table-layout:fixed; 這是一種更有效的現(xiàn)實算法,根據(jù)CSS 2.1技術(shù)說明,這種寫法可以讓表格一行一行的輸出。
  30. 盡可能的使用原始JavaScript。限制JavaScript框架的使用。

  英文原文:30-best-PRactices-to-boost-your-web-applicati


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 遂昌县| 绵阳市| 翁牛特旗| 盐边县| 登封市| 会泽县| 大邑县| 邛崃市| 肥西县| 库伦旗| 江口县| 东阿县| 美姑县| 福州市| 广河县| 东源县| 专栏| 岢岚县| 侯马市| 尖扎县| 长宁县| 皋兰县| 永新县| 西乌珠穆沁旗| 漾濞| 古蔺县| 依兰县| 理塘县| 江源县| 金门县| 汝城县| 平武县| 尼玛县| 乌恰县| 武强县| 常山县| 沙河市| 上蔡县| 任丘市| 湖北省| 四子王旗|