前端性能測(cè)試

前言

性能優(yōu)化無非就是讓頁面的打開速度更快一些,以得到更好的用戶體驗(yàn)衔沼。前端在這方面可以做到的有兩方面欲芹,頁面級(jí)別的優(yōu)化卿啡,比如減少 Http 請(qǐng)求次數(shù)、加快資源的加載速度菱父;二是代碼級(jí)別的優(yōu)化颈娜,頁面重新渲染一次會(huì)經(jīng)過瀏覽器的重排(reflow)和重繪(repaint),這兩部操作是非常耗時(shí)的浙宜,本文將根據(jù)這兩方面的優(yōu)化途徑官辽,大致總結(jié)一下。

頁面級(jí)別優(yōu)化

1. 減少 HTTP請(qǐng)求數(shù)

首先粟瞬,每個(gè)請(qǐng)求都是有成本的同仆,既包含時(shí)間成本也包含資源成本。一個(gè)完整的請(qǐng)求都需要經(jīng)過 DNS尋址裙品、與服務(wù)器建立連接俗批、發(fā)送數(shù)據(jù)、等待服務(wù)器響應(yīng)市怎、接收數(shù)據(jù)這樣一個(gè) “漫長(zhǎng)” 而復(fù)雜的過程岁忘。時(shí)間成本就是用戶需要看到或者 “感受” 到這個(gè)資源是必須要等待這個(gè)過程結(jié)束的,資源上由于每個(gè)請(qǐng)求都需要攜帶數(shù)據(jù)区匠,因此每個(gè)請(qǐng)求都需要占用帶寬干像。另外,由于瀏覽器進(jìn)行并發(fā)請(qǐng)求的請(qǐng)求數(shù)是有上限的 (具體參見此處 )辱志,因此請(qǐng)求數(shù)多了以后蝠筑,瀏覽器需要分批進(jìn)行請(qǐng)求,因此會(huì)增加用戶的等待時(shí)間揩懒,會(huì)給用戶造成站點(diǎn)速度慢這樣一個(gè)印象什乙,即使可能用戶能看到的第一屏的資源都已經(jīng)請(qǐng)求完了,但是瀏覽器的進(jìn)度條會(huì)一直存在已球。

減少 http 請(qǐng)求次數(shù)的主要方法:

設(shè)置 HTTP緩存

http 緩存是 web 性能優(yōu)化中非常重要的一種手段臣镣,把一些常用資源在首次加載時(shí)緩存到瀏覽器本地,再次加載時(shí)可大大減少請(qǐng)求次數(shù)智亮,緩存的資源越多忆某,性能當(dāng)然越好。

緩存的規(guī)則主要有兩種阔蛉,強(qiáng)制緩存和對(duì)比協(xié)商緩存弃舒,兩種緩存分別通過Http報(bào)文頭部不同的字段進(jìn)行控制。


資源合并壓縮

CSS、 Javascript聋呢、Image 都可以用相應(yīng)的工具(Webpack)進(jìn)行壓縮苗踪,壓縮后往往能省下不少空間。

CSS Sprites

合并 CSS圖片削锰,減少請(qǐng)求數(shù)的又一個(gè)好辦法通铲。

懶加載

這條策略實(shí)際上并不一定能減少 HTTP請(qǐng)求數(shù),但是卻能在某些條件下或者頁面剛加載時(shí)減少 HTTP請(qǐng)求數(shù)器贩。

2. 把 js 腳本置底加載

js 腳本是很容易形成阻塞颅夺,導(dǎo)致資源加載停滯,為了避免這種情況蛹稍,先加載其他資源吧黄,最后加載腳本。

3. inline 腳本異步執(zhí)行

inline 腳本與外鏈引用的腳本類似唆姐,也有可能會(huì)引起阻塞稚字,所以也要將 inline 腳本放到頁面底部或者異步方式來加載,

例如使用script標(biāo)簽的defer?和async屬性厦酬、使用setTimeOut。

4. 動(dòng)態(tài)加載 js 模塊

5. css 放在 head 中

頁面渲染過程還要經(jīng)歷重繪重排瘫想,這樣做是避免會(huì)出現(xiàn) DOM 加載完之后卻沒有樣式的情況仗阅。

代碼級(jí)別優(yōu)化

DOM操作應(yīng)該是腳本中最耗性能的一類操作,例如增加国夜、修改减噪、刪除 DOM元素或者對(duì) DOM集合進(jìn)行操作。

而修改 DOM 會(huì)引起網(wǎng)頁的重新渲染车吹。

重新渲染筹裕,就需要重新生成布局和重新繪制。前者叫做"重排"(reflow)窄驹,后者叫做"重繪"(repaint)朝卒。

需要注意的是,"重繪"不一定需要"重排"乐埠,比如改變某個(gè)網(wǎng)頁元素的顏色抗斤,就只會(huì)觸發(fā)"重繪",不會(huì)觸發(fā)"重排"丈咐,因?yàn)椴季譀]有改變瑞眼。但是,"重排"必然導(dǎo)致"重繪"棵逊,比如改變一個(gè)網(wǎng)頁元素的位置伤疙,就會(huì)同時(shí)觸發(fā)"重排"和"重繪",因?yàn)椴季指淖兞恕?/p>

這這兩步只是網(wǎng)頁生成的最后兩部辆影,關(guān)于頁面的生成過程徒像,主要有五步:

1. HTML代碼轉(zhuǎn)化成DOM2. CSS代碼轉(zhuǎn)化成CSSOM(CSS Object Model)3. 結(jié)合DOM和CSSOM黍特,生成一棵渲染樹(包含每個(gè)節(jié)點(diǎn)的視覺信息)4. 生成布局(layout),即將所有渲染樹的所有節(jié)點(diǎn)進(jìn)行平面合成5. 將布局繪制(paint)在屏幕上


這五步里面厨姚,第一步到第三步都非承瞥海快,耗時(shí)的是第四步和第五步谬墙。

"生成布局"(flow)和"繪制"(paint)這兩步今布,合稱為"渲染"(render)。


具體技巧參照:http://ruanyifeng.com/blog/2015/09/web-page-performance-in-depth.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拭抬,一起剝皮案震驚了整個(gè)濱河市部默,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌造虎,老刑警劉巖傅蹂,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異算凿,居然都是意外死亡份蝴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門氓轰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婚夫,“玉大人,你說我怎么就攤上這事署鸡“覆冢” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵靴庆,是天一觀的道長(zhǎng)时捌。 經(jīng)常有香客問我,道長(zhǎng)炉抒,這世上最難降的妖魔是什么奢讨? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮焰薄,結(jié)果婚禮上禽笑,老公的妹妹穿的比我還像新娘。我一直安慰自己蛤奥,他們只是感情好佳镜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凡桥,像睡著了一般蟀伸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天啊掏,我揣著相機(jī)與錄音蠢络,去河邊找鬼。 笑死迟蜜,一個(gè)胖子當(dāng)著我的面吹牛刹孔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娜睛,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼髓霞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤抚官,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后艇挨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邀层。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遂庄,死狀恐怖被济,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涧团,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布经磅,位于F島的核電站泌绣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏预厌。R本人自食惡果不足惜阿迈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望轧叽。 院中可真熱鬧苗沧,春花似錦、人聲如沸炭晒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽网严。三九已至识樱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怜庸。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工当犯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人割疾。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓嚎卫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宏榕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拓诸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 說到H5測(cè)試,對(duì)于做WEB測(cè)試的同學(xué)來說再熟悉不過了担扑,它包括頁H5功能測(cè)試恰响,前端性能測(cè)試,瀏覽器兼容性能測(cè)試...
    微涼_80b6閱讀 423評(píng)論 0 1
  • 點(diǎn)擊鏈接加入QQ群229390571(免費(fèi)公開課涌献、視頻應(yīng)有盡有):https://jq.qq.com/?_wv=1...
    測(cè)試幫日記閱讀 739評(píng)論 0 2
  • 一胚宦、測(cè)試關(guān)注指標(biāo) Http相關(guān): 1、Http請(qǐng)求個(gè)數(shù) 有統(tǒng)計(jì)證明:一個(gè)網(wǎng)頁最終到達(dá)終端用戶有80%的時(shí)間都是js...
    by小杰閱讀 619評(píng)論 0 4
  • 前端性能優(yōu)化資料整理 頁面性能差的直接后果是用戶需要等待燕垃,而等待枢劝,尤其是不確定要多長(zhǎng)時(shí)間的等待會(huì)給用戶帶來焦慮,為...
    飄零之雪閱讀 820評(píng)論 2 3
  • 圍繞前端的性能多如牛毛卜壕,涉及到方方面面您旁,以我我們將圍繞PC瀏覽器和移動(dòng)端瀏覽器的優(yōu)化策略進(jìn)行羅列注意,是羅列不是展...
    流動(dòng)碼文閱讀 677評(píng)論 0 0