最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端如何計(jì)算首屏及白屏?xí)r間代碼示例

 更新時(shí)間:2024年07月12日 10:26:27   作者:一顆不甘墜落的流星  
白屏?xí)r間是指用戶進(jìn)入該網(wǎng)站(比如刷新頁(yè)面、跳轉(zhuǎn)到新頁(yè)面等通過(guò)該方式)的時(shí)刻開(kāi)始計(jì)算,一直到頁(yè)面內(nèi)容顯示出來(lái)之前的時(shí)間節(jié)點(diǎn),這篇文章主要給大家介紹了關(guān)于前端如何計(jì)算首屏及白屏?xí)r間的相關(guān)資料,需要的朋友可以參考下

一、首屏?xí)r間

白屏?xí)r間:頁(yè)面渲染完所有內(nèi)容的時(shí)間

  • 簡(jiǎn)單點(diǎn)就是在<body> 標(biāo)簽后寫js代碼計(jì)算,但是不是很準(zhǔn)確
<head>
	<title>白屏?xí)r間</title>
</head>
<body></body>
<script type="text/javascript">
const time = Date.now() - performance.timing.navigationStart
console.log('首屏?xí)r間結(jié)束點(diǎn):', time)
</script>
  • 還有一個(gè)思路就是利用 MutationObserver 監(jiān)控DOM的變化,變化幅度最大一次時(shí)間的就是首屏?xí)r間

1. DOM的增加、修改、刪除,會(huì)觸發(fā) MutationObserver
2. 每次 DOM 變化可以計(jì)算出一個(gè)相對(duì)時(shí)間(time)和 DOM 變化的分?jǐn)?shù),并存入一個(gè) observerData 數(shù)組中
3. 而后處理 observerData 數(shù)組,計(jì)算 DOM 變化時(shí)分?jǐn)?shù)的差值,取 DOM 分?jǐn)?shù)變化最大的時(shí)間點(diǎn)作為首屏?xí)r間的取值點(diǎn)
4. 因?yàn)槭灼敛⒉皇撬蠨OM都渲染,所以不能取最后一項(xiàng)DOM加載完的時(shí)間

二、白屏?xí)r間

白屏?xí)r間:頁(yè)面開(kāi)始顯示內(nèi)容的時(shí)間

  • 一般瀏覽器開(kāi)始渲染 <body> 標(biāo)簽或者解析完 <head> 標(biāo)簽,就是頁(yè)面白屏結(jié)束的時(shí)間點(diǎn)。
<head>
	<title>白屏?xí)r間</title>
</head>
<script type="text/javascript">
const time = Date.now() - performance.timing.navigationStart
console.log('白屏?xí)r間結(jié)束點(diǎn):', time)
</script>
  • 如果不支持performance,可以這樣做
<head>
	<title>白屏?xí)r間</title>
	<script type="text/javascript">
		window.start = Date.now();
		console.log('白屏?xí)r間開(kāi)始點(diǎn):', window.start)
	</script>
</head>
<script type="text/javascript">
const time = Date.now() - window.start
console.log('白屏?xí)r間結(jié)束點(diǎn):', time)
</script>

附:首屏加載速度慢怎么解決?

1 減少入口文件體積

常用的手段是路由懶加載,只有在解析路由才會(huì)加載相應(yīng)的組件

const routes = [
  {
    path: "blogs",
	name: "blogs",
	component: () => import('./components/blog.js')
  }
];

2 靜態(tài)資源本地緩存

后端返回的資源:采用http緩存

前端合理利用localStorage

CDN靜態(tài)資源緩存

3 UI框架按需加載

在日常使用的UI框架,例如element-UI,antd,我們按需引入:

import { Button } from 'antd';

4 避免組件重復(fù)打包

假設(shè)A.js文件是一個(gè)常用的庫(kù),現(xiàn)在有多個(gè)路由使用A.js文件,這樣就造成重復(fù)下載。

解決方案:

在webpack的config文件中,修改CommonsChunkPlugin的配置minChunks:2minChunks為2會(huì)把使用2次及以上的包抽離出來(lái),放進(jìn)公共的依賴文件中,避免了重復(fù)加載組件。

5 圖片資源壓縮

圖片資源雖然不在編碼過(guò)程中,但是它對(duì)頁(yè)面加載速度影響較大。對(duì)于所有的圖片資源,可以進(jìn)行適當(dāng)?shù)膲嚎s。
對(duì)于頁(yè)面上的icon,可以使用在線字體圖標(biāo),或者使用雪碧圖將眾多小圖標(biāo)合并到一張圖上,以減少http請(qǐng)求的壓力。

雪碧圖被運(yùn)用在眾多使用了很多小圖標(biāo)的網(wǎng)站上。相對(duì)于把每張小圖標(biāo)以.png格式文件的形式引用到頁(yè)面上,使用雪碧圖只需要引用一張圖片,對(duì)內(nèi)存和帶寬更加友好。

使用雪碧圖的優(yōu)點(diǎn)有以下幾點(diǎn):

  • 將多張圖片合并到一張圖片中,可以減小圖片的總大小

  • 將多張圖片合并到一張圖片后,只需一次網(wǎng)絡(luò)請(qǐng)求就可以將所需的資源全部下載,減小建立連接的消耗,在移動(dòng)端尤為明顯

雪碧圖的制作與使用方法:

  • 使用圖像編輯軟件如Photoshop將多張圖放到同一個(gè)圖層并導(dǎo)出或使用自動(dòng)化構(gòu)建工具自動(dòng)拼接合并后的圖片

  • 引用圖片時(shí),圖片地址為合并后的圖片地址,通過(guò)background-position調(diào)整背景圖的位置,并通過(guò)容器的寬高共同作用,來(lái)選出所需的圖片

注意:

在HTTP2中,已經(jīng)不需要考慮減少請(qǐng)求數(shù),故雪碧圖在HTTP2中優(yōu)化性能的意義已經(jīng)不大

6 開(kāi)啟gzip壓縮

拆包之后,可以再使用gzip做一下壓縮,安裝compression-webpack-plugin在webpack中配置壓縮

const CompressionWebpackPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = ['js','css'];

// 配置compression-webpack-plugin壓縮
new CompressionWebpackPlugin({
	algorithm:'gzip',
	test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
	threshold: 10240,
	minRatio: 0.8
});

總結(jié) 

到此這篇關(guān)于前端如何計(jì)算首屏及白屏?xí)r間的文章就介紹到這了,更多相關(guān)前端計(jì)算首屏及白屏?xí)r間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序文章詳情頁(yè)跳轉(zhuǎn)案例詳解

    微信小程序文章詳情頁(yè)跳轉(zhuǎn)案例詳解

    這篇文章主要介紹了微信小程序文章詳情頁(yè)跳轉(zhuǎn)案例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 封裝獲取dom元素的簡(jiǎn)單實(shí)例

    封裝獲取dom元素的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇封裝獲取dom元素的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • 利用Three.js制作一個(gè)新聞聯(lián)播開(kāi)頭動(dòng)畫

    利用Three.js制作一個(gè)新聞聯(lián)播開(kāi)頭動(dòng)畫

    這篇文章主要為大家介紹了如何利用Three.js制作一個(gè)新聞聯(lián)播開(kāi)頭動(dòng)畫,文中的實(shí)現(xiàn)步驟講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • js實(shí)現(xiàn)簡(jiǎn)潔的TAB滑動(dòng)門效果代碼

    js實(shí)現(xiàn)簡(jiǎn)潔的TAB滑動(dòng)門效果代碼

    這篇文章主要介紹了js實(shí)現(xiàn)簡(jiǎn)潔的TAB滑動(dòng)門效果代碼,通過(guò)簡(jiǎn)單的JavaScript自定義函數(shù)動(dòng)態(tài)遍歷頁(yè)面元素實(shí)現(xiàn)tab滑動(dòng)切換的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • JavaScript實(shí)現(xiàn)向右伸出的多級(jí)網(wǎng)頁(yè)菜單效果

    JavaScript實(shí)現(xiàn)向右伸出的多級(jí)網(wǎng)頁(yè)菜單效果

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)向右伸出的多級(jí)網(wǎng)頁(yè)菜單效果,通過(guò)javascript調(diào)用頁(yè)面元素屬性的動(dòng)態(tài)改變實(shí)現(xiàn)向右展開(kāi)菜單效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • JS實(shí)現(xiàn)日期時(shí)間動(dòng)態(tài)顯示的方法

    JS實(shí)現(xiàn)日期時(shí)間動(dòng)態(tài)顯示的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)日期時(shí)間動(dòng)態(tài)顯示的方法,涉及JavaScript基于時(shí)間函數(shù)定時(shí)操作頁(yè)面元素屬性的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-12-12
  • js中的面向?qū)ο笕腴T

    js中的面向?qū)ο笕腴T

    本文主要介紹了js中的面向?qū)ο蟮南嚓P(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • JS立即執(zhí)行函數(shù)功能與用法分析

    JS立即執(zhí)行函數(shù)功能與用法分析

    這篇文章主要介紹了JS立即執(zhí)行函數(shù)功能與用法,結(jié)合實(shí)例形式分析了立即執(zhí)行函數(shù)的相關(guān)概念、定義、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • js實(shí)現(xiàn)浮動(dòng)在網(wǎng)頁(yè)右側(cè)的簡(jiǎn)潔QQ在線客服代碼

    js實(shí)現(xiàn)浮動(dòng)在網(wǎng)頁(yè)右側(cè)的簡(jiǎn)潔QQ在線客服代碼

    這篇文章主要介紹了js實(shí)現(xiàn)浮動(dòng)在網(wǎng)頁(yè)右側(cè)的簡(jiǎn)潔QQ在線客服代碼,通過(guò)簡(jiǎn)單的自定義函數(shù)控制客服圖片的顯示與隱藏效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-09-09
  • JavaScript實(shí)現(xiàn)判斷時(shí)間間隔是否連續(xù)為一天

    JavaScript實(shí)現(xiàn)判斷時(shí)間間隔是否連續(xù)為一天

    這篇文章主要為大家詳細(xì)介紹了如何使用JavaScript實(shí)現(xiàn)判斷時(shí)間間隔是否連續(xù)為一天,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2024-01-01

最新評(píng)論

个旧市| 寿宁县| 当涂县| 红桥区| 开远市| 德江县| 察隅县| 东丽区| 开阳县| 柘城县| 柯坪县| 沂水县| 逊克县| 三原县| 台前县| 唐河县| 新宁县| 红安县| 陈巴尔虎旗| 清新县| 万州区| 青浦区| 弥渡县| 五大连池市| 海门市| 永福县| 德惠市| 渝北区| 屏南县| 武功县| 涿鹿县| 清丰县| 黄平县| 棋牌| 和田市| 郯城县| 萨嘎县| 保康县| 武定县| 乐东| 汉中市|