摘要:原則多使用內存,緩存或者其他方法減少計算,減少網絡請求減少操作硬盤讀寫加載資源優化靜態資源的合并和壓縮。操作事件節流主要用于觸發頻率較高的事件,設定一個緩沖觸發事件。
1.原則
多使用內存,緩存或者其他方法
減少CPU計算,減少網絡請求
減少IO操作(硬盤讀寫)
2.加載資源優化靜態資源的合并和壓縮。
靜態資源緩存(瀏覽器緩存策略)。
使用CDN讓靜態資源加載更快。
3. 渲染優化CSS放head中,JS放body后
圖片懶加載
減少DOM操作,對DOM操作做緩存
減少DOM操作,多個操作盡量合并在一起執行
事件節流
盡早執行操作 DOMContentLoaded
4. 示例 4.1 資源合并a.js b.js c.js --- abc.js4.2 緩存
通過連接名稱控制緩存
只有改變內容的時候,鏈接名稱才會改變。
4.3 懶加載4.4 緩存dom查詢
//沒有緩存dom for (let i = 0; i < document.getElementsByTagName("p").length; i++) { } //緩存dom var p = document.getElementsByTagName("p"); for (let i = 0; i < p.length; i++) { }4.5 合并dom插入
var listNode = document.getElementById("list"); var flag = document.createDocumentFragment(); var li; for (let i = 0; i < 10; i++) { li = document.createElement("li"); li.innerHTML = i; flag.appendChild(li); } listNode.appendChild(flag);
10次dom插入 ---> 1次dom插入
4.6 事件節流監聽文字改變事件,無操作100毫秒后執行操作,不用每次觸發。
var textarea = document.getElementById("ta"); var timeoutId; textarea.addEventListener("keyup",function(){ if(i){ clearTimeout(i); } timeoutId = setTimeout(() => { //操作 }, 100); });
事件節流主要用于觸發頻率較高的事件,設定一個緩沖觸發事件。
補充 異步加載非核心代碼異步加載 -- 異步加載的方式 -- 區別
1.動態腳本加載
用js創建
2.defer
3.async
沒有 defer 或 async,瀏覽器會立即加載并執行指定的腳本,“立即”指的是在渲染該 script 標簽之下的文檔元素之前,也就是說不等待后續載入的文檔元素,讀到就加載并執行。 有 async,加載和渲染后續文檔元素的過程將和 script.js 的加載與執行并行進行(異步)。 有 defer,加載后續文檔元素的過程將和 script.js 的加載并行進行(異步),但是 script.js 的執行要在所有元素解析完成之后,DOMContentLoaded 事件觸發之前完成。
關于 defer,我們還要記住的是它是按照加載順序執行腳本的
標記為async的腳本并不保證按照指定它們的先后順序執行。對它來說腳本的加載和執行是緊緊挨著的,所以不管你聲明的順序如何,只要它加載完了就會立刻執行。
瀏覽器緩存總結的非常好
瀏覽器緩存 -- 緩存的分類 -- 緩存的原理
緩存就是html文件在本地存在的副本,
強緩存
發現有緩存直接用。
Expires: 絕對時間,判斷客戶端日期是否超過這個時間 Cache-Control:相對時間,判斷訪問間隔是否大于3600秒 //在設定時間之前不會和服務端進行通信了 //如果兩個都下發以后者為準
協商緩存
詢問服務器緩存是否可以用,在進行判斷是否用。
Last-Modified/If-Modified-Since
第一次請求,respone的header加上Last-Modified(最后修改時間) 再次請求,在request的header上加上If-Modified-Since 和服務端的最后修改時間對比,如果沒有變化則返回304 Not Modified,但是不會返回資源內容;如果有變化,就正常返回資源內容。 瀏覽器收到304的響應后,就會從緩存中加載資源 如果協商緩存沒有命中,瀏覽器直接從服務器加載資源時,Last-Modified的Header在重新加載的時候會被更新
Etag/If-None-Match
這兩個值是由服務器生成的每個資源的唯一標識字符串,只要資源有變化就這個值就會改變;其判斷過程與Last-Modified/If-Modified-Since類似,他可以精確到秒的更高級別。
DNS預解析在一些瀏覽器的a標簽是默認打開dns預解析的,在https協議下dns預解析是關閉的,加入mate后會打開。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100505.html
摘要:前言對于前端的性能話題,從來都沒有斷絕過。作為一個前端開發者,性能是我們關注的指標。前端發展以來,優化方式,琳瑯滿目,有雅虎軍規等。所以,接下來我會從三個方面就前端性能進行總結網絡方面操作及渲染方面數據方面。 前言 對于前端的性能話題,從來都沒有斷絕過。因為這個東西沒有最好,只有更好。而且往往也是業務的繁雜程度去決定優化程度的。作為一個前端開發者,性能是我們關注的指標。它直接影響著我們...
摘要:前言對于前端的性能話題,從來都沒有斷絕過。作為一個前端開發者,性能是我們關注的指標。前端發展以來,優化方式,琳瑯滿目,有雅虎軍規等。所以,接下來我會從三個方面就前端性能進行總結網絡方面操作及渲染方面數據方面。 前言 對于前端的性能話題,從來都沒有斷絕過。因為這個東西沒有最好,只有更好。而且往往也是業務的繁雜程度去決定優化程度的。作為一個前端開發者,性能是我們關注的指標。它直接影響著我們...
摘要:前言對于前端的性能話題,從來都沒有斷絕過。作為一個前端開發者,性能是我們關注的指標。前端發展以來,優化方式,琳瑯滿目,有雅虎軍規等。所以,接下來我會從三個方面就前端性能進行總結網絡方面操作及渲染方面數據方面。 前言 對于前端的性能話題,從來都沒有斷絕過。因為這個東西沒有最好,只有更好。而且往往也是業務的繁雜程度去決定優化程度的。作為一個前端開發者,性能是我們關注的指標。它直接影響著我們...
摘要:前端每周清單年度總結與盤點在過去的八個月中,我幾乎只做了兩件事,工作與整理前端每周清單。本文末尾我會附上清單線索來源與目前共期清單的地址,感謝每一位閱讀鼓勵過的朋友,希望你們能夠繼續支持未來的每周清單。 showImg(https://segmentfault.com/img/remote/1460000010890043); 前端每周清單年度總結與盤點 在過去的八個月中,我幾乎只做了...
摘要:是具有此屬性的域名不需要用戶點擊鏈接就在后臺解析,而域名解析和內容載入是串行的網絡操作,所以這個方式能減少用戶的等待時間,提升用戶體驗。 web前端性能優化主要分為以下幾個板塊: 加載優化 DNS預解析 合并img、css、javascript文件,減少http請求 緩存一切可緩存資源 使用長Cache 使用外聯式引用css、javascript文件 壓縮HTML、css、jav...
摘要:是具有此屬性的域名不需要用戶點擊鏈接就在后臺解析,而域名解析和內容載入是串行的網絡操作,所以這個方式能減少用戶的等待時間,提升用戶體驗。 web前端性能優化主要分為以下幾個板塊: 加載優化 DNS預解析 合并img、css、javascript文件,減少http請求 緩存一切可緩存資源 使用長Cache 使用外聯式引用css、javascript文件 壓縮HTML、css、jav...
閱讀 3669·2021-11-24 09:39
閱讀 1275·2021-09-30 09:48
閱讀 3258·2021-09-09 11:51
閱讀 2883·2021-09-08 10:41
閱讀 1329·2019-08-30 14:06
閱讀 2798·2019-08-30 14:01
閱讀 874·2019-08-29 17:11
閱讀 3169·2019-08-29 15:37