前端開發完之后,業務說太卡,你優化吧。我打開一個離職的同事的代碼,復用到是用的挺好的,不過把一個城市級聯里面下載數據的環節封裝到組件中,頁面中有8個地方都用到了,打開網絡請求,真的就下載了8次2m的城市數據。幸好我們網絡情況還不錯,也就每次頁面打開前卡半分鐘而已,呵呵了。
在前后端分離的大環境下,前端優化也越來越重要。無論從視覺、性能、頁面邏輯上進行優化,都可以比較直觀的提升用戶體驗。當然,優化的前提是知道我哪里慢了,performance api就是進行這樣的監控的。
memory(chrome中內存)jsheapsizelimit: 內存大小限制totaljsheapsize: 可使用內存usedjsheapsize: 已使用內存navigation(上下文網頁導航)onresourcetimingbufferfull(資源時間性能緩沖區事件鉤子)timeorigin(基準時間)timing(節點時間)
通過拆解計算各個節點時間的間隔就是每個環節的使用情況了。
下面放一個頁面函數顯示當前頁面的各階段加載的時間顯示。
function performancetest() { let timing = performance.timing, readystart = timing.fetchstart - timing.navigationstart, redirecttime = timing.redirectend - timing.redirectstart, appcachetime = timing.domainlookupstart - timing.fetchstart, unloadeventtime = timing.unloadeventend - timing.unloadeventstart, lookupdomaintime = timing.domainlookupend - timing.domainlookupstart, connecttime = timing.connectend - timing.connectstart, whitescreentime = timing.responsestart - timing.navigationstart, requesttime = timing.responseend - timing.requeststart, initdomtreetime = timing.dominteractive - timing.responseend, domreadytime = timing.domcomplete - timing.dominteractive, loadeventtime = timing.loadeventend - timing.loadeventstart, loadtime = timing.loadeventend - timing.navigationstart; console.log('準備新頁面時間耗時: ' + readystart); console.log('redirect 重定向耗時: ' + redirecttime); console.log('appcache 耗時: ' + appcachetime); console.log('unload 前文檔耗時: ' + unloadeventtime); console.log('dns 查詢耗時: ' + lookupdomaintime); console.log('tcp連接耗時: ' + connecttime); console.log('白屏時間: ' + whitescreentime); console.log('request請求耗時: ' + requesttime); console.log('請求完畢至dom加載: ' + initdomtreetime); console.log('解析dom樹耗時: ' + domreadytime); console.log('load事件耗時: ' + loadeventtime); console.log('加載時間耗時: ' + loadtime);}
performance 方法clearmarks() 清理打點標記clearmeasures() 清理連線標記clearresourcetimings() 重置緩沖區域大小getentries() 獲取所有資源分節點加載時間getentriesbyname() 通過name獲取所有資源分節點加載時間getentriesbytype() 通過type獲取所有資源分節點加載時間mark() 增加打點標記measure() 增加打點連線標記now() 從獲取基準時間到當前時間的間隔,精確到微秒百萬分之一秒,呃setresourcetimingbuffersize() 設置緩沖區域大小
chrome開發這工具的performance面板本地開發調試的話,chrome中提供了關于performance情況更加詳細的報表數據,精確到每個資源,每個時間點頁面的渲染效果,后續就可以針對環節進行專項優化(像我這種密集恐懼的人,看的還有點慌呢)
使用上的性能面板的時候,如果你的chrome上安裝了很多插件的話,建議打開無痕模式進行調試。
文末關于performanceapi是建立在chrome瀏覽器的基礎上使用的,其他瀏覽器兼容情況暫時沒有去深究。
前端優化,從網絡開始請求,到最后渲染結束,中間方方面面的環節,都可以進行很多優化,前端優化雅虎軍規依然是優化方向,每一個環節都可以寫出來很多文章。
關于網絡營銷推廣大企業都是這么做的微營銷分享:快速成交的四大板塊要知曉!秦皇島SEO推廣怎么做關鍵詞排名呢國內網站建設的幾種風格網站建設怎樣才讓你的網站脫穎而出營銷方案,全網營銷方案怎么做,新聞營銷公司建設網站提高排名的五個基本方法政府網站建設有哪些意義