日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

如何有效監測網頁靜態資源大小?

來源: 責編: 時間:2024-04-24 17:35:34 251觀看
導讀前言作為前端人員肯定經常遇到這樣的場景:需求剛上線,產品拿著手機來找你,為什么頁面打開這么慢呀,心想自己開發的時候也有注意性能問題呀,不可能會這么夸張。那沒辦法只能排查下是哪一塊影響了頁面的整體性能,打開瀏覽器控

前言

作為前端人員肯定經常遇到這樣的場景:需求剛上線,產品拿著手機來找你,為什么頁面打開這么慢呀,心想自己開發的時候也有注意性能問題呀,不可能會這么夸張。那沒辦法只能排查下是哪一塊影響了頁面的整體性能,打開瀏覽器控制臺一看,頁面上的這些配圖每張都非常大,心想這些配圖都這么大,頁面怎么快,那么我們有沒有辦法監測頁面上的這些靜態資源大小,從而避免這種情況的發生。5vV28資訊網——每日最新資訊28at.com

Performance

Performance 接口可以獲取到當前頁面中與性能相關的信息。5vV28資訊網——每日最新資訊28at.com

該對象提供許多屬性及方法可以用來測量頁面性能,這里介紹幾個用來獲取PerformanceEntry的方法:5vV28資訊網——每日最新資訊28at.com

getEntries

該方法獲取一組當前頁面已經加載的資源PerformanceEntry對象。接收一個可選的參數options進行過濾,options支持的屬性有name,entryType,initiatorType。5vV28資訊網——每日最新資訊28at.com

const entries = window.performance.getEntries();

getEntriesByName

該方法返回一個給定名稱和 name 和 type 屬性的PerformanceEntry對象數組,name的取值對應到資源數據中的name字段,type取值對應到資源數據中的entryType字段。5vV28資訊網——每日最新資訊28at.com

const entries = window.performance.getEntriesByName(name, type);

getEntriesByType

該方法返回當前存在于給定類型的性能時間線中的對象PerformanceEntry對象數組。type取值對應到資源數據中的entryType字段。5vV28資訊網——每日最新資訊28at.com

const entries = window.performance.getEntriesByType(type);

嘗試獲取靜態資源數據

使用getEntriesByType獲取指定類型的性能數據,performance entryType中有一個值為resource,用來獲取文檔中資源的計時信息。該類型包括有:script、link、img、css、xmlhttprequest、beacon、fetch、other等。5vV28資訊網——每日最新資訊28at.com

const resource = performance.getEntriesByType('resource')console.log('resource', resource)

這樣可以獲取到非常多關于資源加載的數據:5vV28資訊網——每日最新資訊28at.com

5vV28資訊網——每日最新資訊28at.com

為了方便查看,我們來稍微處理下數據5vV28資訊網——每日最新資訊28at.com

const resourceList = []const resource = performance.getEntriesByType('resource')console.log('resource', resource)resource.forEach((item) => {  resourceList.push({    type: item.initiatorType, // 資源類型    name: item.name, // 資源名稱    loadTime: `${(item.duration / 1000).toFixed(3)}s`, // 資源加載時間    size: `${(item.transferSize / 1024).toFixed(0)}kb`, // 資源大小  })})

5vV28資訊網——每日最新資訊28at.com

這樣對于每個資源的類型、名稱、加載時長以及大小,都非常清晰5vV28資訊網——每日最新資訊28at.com

但是有些資源的大小為什么會是0呢?以及還有很多頁面上的資源貌似沒有統計到,這是為啥呢?5vV28資訊網——每日最新資訊28at.com

這是因為頁面上的資源請求并不是一次性加載完的,比如一些資源的懶加載,這里就有可能會統計不到,或者資源大小統計會有問題,所以我們需要監聽資源的動態加載。5vV28資訊網——每日最新資訊28at.com

監聽資源加載

以上介紹的3個API都無法做到對資源動態加載的監聽,這里就需要用到PerformanceObserver來處理動態加載的資源了5vV28資訊網——每日最新資訊28at.com

PerformanceObserver

PerformanceObserver 主要用于監測性能度量事件,在瀏覽器的性能時間軸記錄新的 performanceEntry 時會被通知。5vV28資訊網——每日最新資訊28at.com

通過使用 PerformanceObserver() 構造函數我們可以創建并返回一個新的 PerformanceObserver 對象,從而進行性能的監測。5vV28資訊網——每日最新資訊28at.com

用法

PerformanceObserver 與其它幾個 Observer 類似,使用前需要先進行實例化,然后使用 observe 監聽相應的事件。5vV28資訊網——每日最新資訊28at.com

function perf_observer(list, observer) {  // ...}var observer = new PerformanceObserver(perf_observer);observer.observe({ entryTypes: ["resource"] });

它主要有以下實例方法:5vV28資訊網——每日最新資訊28at.com

  • observe:指定監測的 entry types的集合。當 performance entry 被記錄并且是指定的 entryTypes 之一的時候,性能觀察者對象的回調函數會被調用。
  • disconnect:性能監測回調停止接收PerformanceEntry。
  • takeRecords:返回當前存儲在性能觀察器的 performance entry列表,并將其清空。

嘗試獲取頁面圖片加載信息

new PerformanceObserver((list) => {  list    .getEntries()    .filter(    (entry) =>    entry.initiatorType === 'img' || entry.initiatorType === 'css',  )    .forEach((entry) => {    resourceList.push({      name: entry.name, // 資源名稱      loadTime: `${(entry.duration / 1000).toFixed(3)}s`, // 資源加載時間      type: entry.initiatorType, // 資源類型      size: `${(entry.transferSize / 1024).toFixed(0)}kb`, // 資源大小    })    console.log('--', resourceList)  })}).observe({ entryTypes: ['resource'] })

這里需要注意的是,獲取類型除了img還得加上css,因為CSS中可能會有通過url()加載的背景圖。5vV28資訊網——每日最新資訊28at.com

5vV28資訊網——每日最新資訊28at.com

這樣,頁面上的圖片大小以及加載時長一目了然了5vV28資訊網——每日最新資訊28at.com

通知

我們自己是知道問題了,但是還需要將這些信息推送給產品及運營,這個可以通過企業微信提供的API來進行操作,不滿足條件的資源將進行推送通知:5vV28資訊網——每日最新資訊28at.com

setTimeout(() => {  axios.get('http://127.0.0.1:3000/jjapi/user/pushMessage', {    params: {      msgtype: 'markdown',      markdown: {        content: `          <font color="warning">H5項目資源加載異常,請注意查看</font>          類型:<font color="comment">圖片資源大小超出限制</font>          異常數量:<font color="comment">${resourceList.length}例</font>           異常列表:<font color="comment">${resourceList.map(            (item) => item.name,          )}</font>`,      },    },  })}, 8000)

通知如下:5vV28資訊網——每日最新資訊28at.com

5vV28資訊網——每日最新資訊28at.com

這里為了避免跨域,使用nest自己包了一層,這樣就能夠及時發現線上配置資源是否有問題,并且這個腳本也不需要所有用戶都執行,因為大家的資源都是一樣的,只需要配置特定白名單(比如開發、測試、產品),在頁面上線后,在進行線上回歸的同時執行該腳本去監測上線配置資源是否都合理...5vV28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-85234-0.html如何有效監測網頁靜態資源大小?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 過多的全局變量帶來的弊端與解決之道

下一篇: 效率工具:Readwise Reader和Arc瀏覽器新功能介紹

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品日本| 欧美大片在线看| 亚洲免费婷婷| 性感少妇一区| 久久久久成人网| 国产视频久久| 欧美日韩一区二区免费视频| 欧美午夜电影网| 国产亚洲观看| 亚洲欧洲日本国产| 亚洲一区二区三区久久 | 91久久在线| 99精品99| 久久www成人_看片免费不卡| 欧美成人一品| 国产女精品视频网站免费| 亚洲第一成人在线| 亚洲性图久久| 六月丁香综合| 国产精品久久97| 亚洲风情在线资源站| 一区二区免费在线播放| 亚洲免费不卡| 欧美在线视频二区| 欧美精品一区二区三区高清aⅴ| 国产精品成人播放| 一区二区三区在线观看视频| 欧美三级日本三级少妇99| 日韩午夜电影| 正在播放亚洲一区| 久久国产黑丝| 欧美日韩国产bt| 久久先锋影音| 欧美日韩中文字幕在线| 国产字幕视频一区二区| 一本色道久久综合亚洲精品高清| 亚洲精品国产精品国产自| 尤物精品国产第一福利三区| 日韩性生活视频| 亚洲先锋成人| 久久久久国产精品一区二区| 欧美日韩视频在线一区二区观看视频| 国产综合在线看| 狠狠爱综合网| 亚洲一区二区在线| 欧美国产日本高清在线| 国产视频一区免费看| 99国产一区二区三精品乱码| 久热精品在线| 欧美激情精品久久久久久蜜臀| 国产精品毛片在线| 国产欧美日韩视频一区二区| 亚洲精品女av网站| 国产字幕视频一区二区| 国产乱人伦精品一区二区| 激情久久一区| 亚洲在线播放| 欧美日韩国产精品一区二区亚洲| 欧美激情视频在线播放 | 亚洲在线观看视频| 欧美精品v日韩精品v国产精品| 国产综合久久久久久| 亚洲一区三区电影在线观看| 欧美激情视频给我| 亚洲电影毛片| 老司机免费视频一区二区三区| 国产一区二区三区久久精品| 亚洲欧美日韩精品一区二区| 欧美亚日韩国产aⅴ精品中极品| 亚洲美女毛片| 欧美激情第五页| 亚洲激情午夜| 欧美高清视频一区| 亚洲黄色免费网站| 免费视频一区| 亚洲国产精品一区在线观看不卡| 在线一区二区日韩| 欧美精品黄色| 日韩视频免费看| 老司机aⅴ在线精品导航| 亚洲精品久久7777| 久久嫩草精品久久久精品| 国产精品日韩一区二区| 一区二区三区久久网| 欧美日韩大片| 99riav久久精品riav| 欧美另类在线观看| 日韩视频免费观看| 欧美日韩mp4| 一本不卡影院| 国产精品国产三级国产a| 亚洲一级二级| 国产精品试看| 欧美一级黄色录像| 国产一二精品视频| 亚洲人屁股眼子交8| 免费黄网站欧美| 亚洲黄色精品| 欧美日韩精品免费观看视一区二区| 99在线热播精品免费| 欧美视频中文字幕| 午夜精品一区二区三区在线 | 欧美日韩国产一区| 一区二区三区.www| 国产精品久久一卡二卡| 性亚洲最疯狂xxxx高清| 国内精品视频在线观看| 国产精品国产福利国产秒拍| 91久久久在线| 欧美精品高清视频| 9i看片成人免费高清| 欧美视频在线一区| 亚洲欧美卡通另类91av| 国产色综合网| 久热精品在线视频| 亚洲精品麻豆| 国产精品久久久久国产精品日日| 午夜精品久久| 韩日午夜在线资源一区二区| 亚洲免费成人av| 欧美日韩综合网| 欧美亚洲在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美精品成人91久久久久久久| 中文国产成人精品| 国产亚洲欧美色| 欧美高清在线一区二区| 亚洲午夜在线视频| 国产综合久久久久久| 欧美国产免费| 亚洲欧美日韩区| 在线播放不卡| 欧美午夜视频在线| 久久―日本道色综合久久| 亚洲美女91| 国产视频一区在线| 欧美日本乱大交xxxxx| 欧美一区二区三区日韩视频| 亚洲国产成人高清精品| 欧美日韩不卡合集视频| 欧美精品一区二区三| 日韩午夜视频在线观看| 国产精品人人做人人爽| 久色成人在线| 国产欧美69| 欧美va亚洲va国产综合| 亚洲一区三区在线观看| 在线欧美日韩精品| 欧美午夜免费影院| 久久噜噜亚洲综合| 亚洲天堂av图片| 在线视频成人| 国产目拍亚洲精品99久久精品 | 免费成人黄色| 午夜国产不卡在线观看视频| 亚洲欧洲日产国产网站| 国产欧美日韩亚洲一区二区三区| 欧美精品系列| 久久婷婷成人综合色| 亚洲综合精品一区二区| 亚洲激情在线播放| 国产一区二区欧美| 国产精品久久999| 欧美激情视频网站| 久久综合伊人77777| 欧美一级片久久久久久久| 日韩香蕉视频| 亚洲大胆人体视频| 国产裸体写真av一区二区| 欧美日韩亚洲综合| 久久乐国产精品| 日韩视频精品在线| 国产日韩精品久久| 欧美—级a级欧美特级ar全黄| 亚洲欧美日韩一区在线| 亚洲麻豆国产自偷在线| 影音欧美亚洲| 国产情侣一区| 国产精品av免费在线观看| 欧美成人免费视频| 久久久久久久成人| 国内精品伊人久久久久av一坑| 久久免费视频这里只有精品| 亚洲淫性视频| 亚洲精品在线看| 亚洲国产日韩一区二区| 黄色日韩网站| 国产原创一区二区| 国产精品午夜av在线| 欧美日韩一区综合| 欧美日本一道本| 欧美精品一区二区在线播放| 欧美电影免费观看| 蜜桃av一区二区| 久久这里有精品15一区二区三区 | 一区二区日韩| 亚洲开发第一视频在线播放| 亚洲国产欧美日韩精品| 在线看欧美日韩| 一区在线播放| 伊大人香蕉综合8在线视| 国产一在线精品一区在线观看| 国产欧美视频一区二区三区| 国产精品一级|