<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

    web前端性能分析--原理篇

     web前端性能:
      即是web用戶在訪問一個(gè)頁面時(shí)所要花費(fèi)的時(shí)間總和。即一個(gè)完全意義上的用戶響應(yīng)時(shí)間,相對(duì)于服務(wù)器的響應(yīng)時(shí)間而言還會(huì)包括更多的內(nèi)容和影響因素。那么一個(gè)web頁面的完整請(qǐng)求包括了哪些部分的時(shí)間總和就是web前段性能分析和優(yōu)化所需要了解的基礎(chǔ)知識(shí),先了解一下用戶從瀏覽器訪問一個(gè)url后到頁面完全展示所有內(nèi)容的整個(gè)過程吧。
      頁面的請(qǐng)求過程:
      1、瀏覽器的url請(qǐng)求
      2、遞歸尋找DNS服務(wù)器
      3、連接目標(biāo)IP并建立TCP連接
      4、向目標(biāo)服務(wù)器發(fā)送http請(qǐng)求
      5、web服務(wù)器接收請(qǐng)求后處理
      6、web服務(wù)器返回相應(yīng)的結(jié)果【無效、重定向、正確頁面等】
      7、瀏覽器接收返回的http內(nèi)容
      ================================前端解析分割線===========================================
      8、開始解析html文件,當(dāng)然是自上而下,先是頭部,后是body
      9、當(dāng)解析到頭部css外部鏈接時(shí),同步去下載,如果遇到外部js鏈接也是下載【不過js鏈接不建議放在頭部,因?yàn)榈⒄`頁面第一展現(xiàn)時(shí)間】
      10、接著解析body部分,邊解析邊開始生成對(duì)應(yīng)的DOM樹,同時(shí)等待css文件下載
      11、一旦css文件下載完畢,那么就同步去用已經(jīng)生成的DOM節(jié)點(diǎn)+CSS去生成渲染樹
      12、渲染樹一旦有結(jié)構(gòu)模型了,接著就會(huì)同步去計(jì)算渲染樹節(jié)點(diǎn)的布局位置
      13、一旦計(jì)算出來渲染的坐標(biāo)后,又同步去開始渲染
      14、10-13步進(jìn)行過程中如果遇到圖片則跳過去渲染下面內(nèi)容,等待圖片下載成功后會(huì)返回來在渲染原來圖片的位置
      15、同14步,如果渲染過程中出現(xiàn)js代碼調(diào)整DOM樹機(jī)構(gòu)的情況,也會(huì)再次重新來過,從修改DOM那步開始
      16、最終所有節(jié)點(diǎn)和資源都會(huì)渲染完成
      =========================================分析結(jié)束分割線==============================================
      17、渲染完成后開始page的onload事件
      18、整個(gè)頁面load完成
      整個(gè)過程中會(huì)有很多的分別請(qǐng)求,所以TCP連接會(huì)很多,并且每一個(gè)用完都會(huì)自己關(guān)了,除非是keep-live類型的可以請(qǐng)求多次才關(guān)閉。
      綜上所述:
      一個(gè)頁面的請(qǐng)求等于一個(gè)或多個(gè)url的請(qǐng)求,因此一個(gè)頁面里包含的外部請(qǐng)求數(shù)會(huì)影響頁面的整體性能
      【每請(qǐng)求一次就要多占用一次cpu使用、多一次tcp連接】
      每個(gè)url的請(qǐng)求又包括尋址、連接、請(qǐng)求傳輸、返回傳輸、斷連的過程;因此每個(gè)階段的外部環(huán)境也會(huì)影響整體性能
      【DNS服務(wù)器的尋址時(shí)間,請(qǐng)求和返回內(nèi)容時(shí)的網(wǎng)絡(luò)環(huán)境】
      除了URL請(qǐng)求數(shù)量外,每個(gè)請(qǐng)求的內(nèi)容大小也是影響性能的主要因素
      【文件越大消耗在傳輸過程中的時(shí)間就越長】
      請(qǐng)求同樣多的資源,并行請(qǐng)求和串行請(qǐng)求速率是不一樣的,所以請(qǐng)求的資源要盡量支持同步請(qǐng)求
      【同步請(qǐng)求不同資源,即請(qǐng)求被發(fā)送到不同的資源服務(wù)器即可】
      依據(jù)瀏覽器的加載、渲染機(jī)制,選擇合適的HTML內(nèi)容排版方式
      【減少反復(fù)創(chuàng)建對(duì)象實(shí)例的次數(shù)、充分利用緩存機(jī)制】
      優(yōu)先加載用戶關(guān)注的內(nèi)容
      【css加載優(yōu)于js內(nèi)容,首屏內(nèi)容優(yōu)于非首屏內(nèi)容】
      關(guān)注完http請(qǐng)求的過程后,再來關(guān)注整個(gè)請(qǐng)求過程中關(guān)注的幾個(gè)時(shí)間點(diǎn),通過確定時(shí)間點(diǎn)就可以確定影響性能的時(shí)間段,就是確定影響性能的因素。根據(jù)上面的介紹主要的幾個(gè)時(shí)間點(diǎn)又可以分頁面的整體時(shí)間點(diǎn)、以及單個(gè)url請(qǐng)求過程中的時(shí)間點(diǎn)。【基于httpanalyzer工具的指標(biāo)】
      單個(gè)url請(qǐng)求的主要時(shí)間點(diǎn):
      1、Cache Read:緩存讀取時(shí)間,或304錯(cuò)誤的處理時(shí)間
      2、Block:請(qǐng)求等待時(shí)間,取決于緩存檢查,網(wǎng)絡(luò)連接等待
      3、DNS Lookup:DNS服務(wù)器查找時(shí)間,取決于dns服務(wù)的數(shù)量,dns注冊(cè)的域
      4、Connect:tcp連接的總時(shí)間,取決于連接類型,ssh,keepalive都會(huì)比http長
      5、Send first to last:發(fā)送請(qǐng)求內(nèi)容的時(shí)間,取決于請(qǐng)求內(nèi)容大小,及上行的傳輸速度
      6、Wait:等待響應(yīng)的時(shí)間,取決于網(wǎng)絡(luò)環(huán)境的響應(yīng),web服務(wù)器的處理時(shí)間
      7、Receive first to last:接收響應(yīng)內(nèi)容的時(shí)間,取決于響應(yīng)內(nèi)容,下行的傳輸速度,也要考慮服務(wù)器的帶寬
      8、Time to first byte:從請(qǐng)求一直到接收到第一個(gè)字符的總時(shí)間,等于1+2+3+4+5+6
      9、Network:網(wǎng)絡(luò)消耗時(shí)間,等于3+4
      10、Begin to end:整個(gè)請(qǐng)求的總時(shí)間,等于1+2+3+4+5+6+7
      單個(gè)頁面的主要時(shí)間點(diǎn):
      1、DOM Ready Time: DOM完成的時(shí)間,從接收html到完全轉(zhuǎn)換成dom樹所需的時(shí)間
      2、DOM Ready to Page Load: 頁面元素的加載和渲染完成時(shí)間,包括html,css,img及其它內(nèi)容
      3、Page Load Time: page頁onload事件的時(shí)間,其實(shí)際時(shí)間等于總時(shí)間 - (DOM ready + 元素渲染時(shí)間)
      4、URL Requests Begin to End:url請(qǐng)求所消耗的所有時(shí)間,從發(fā)送請(qǐng)求發(fā)起到接收最后一個(gè)字節(jié)斷開
      5、Network Time:消耗在網(wǎng)絡(luò)上的時(shí)間,即tcp的連接時(shí)間
      6、Begin to End:所有消耗的時(shí)間,包括請(qǐng)求結(jié)束后的渲染時(shí)間
    相關(guān)文章
    web前端性能分析--實(shí)踐篇

    posted on 2013-09-27 10:44 順其自然EVO 閱讀(419) 評(píng)論(0)  編輯  收藏 所屬分類: web 前端性能測(cè)試

    <2013年9月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲一区二区三区免费在线观看| 国产成人亚洲综合网站不卡| 在线日韩日本国产亚洲| 少妇亚洲免费精品| 免费jjzz在线播放国产| 免费在线观看你懂的| 四虎永久免费观看| 亚洲国产成人VA在线观看| 国产成人免费片在线视频观看| 日韩免费电影在线观看| 国产精品酒店视频免费看| 免费人妻无码不卡中文字幕18禁| 国产真实伦在线视频免费观看| 国产乱人免费视频| 亚洲毛片网址在线观看中文字幕 | 久久不见久久见免费影院www日本| 一区免费在线观看| 久久久久国色AV免费观看| 国产成人无码区免费内射一片色欲| 免费视频一区二区| 天天影院成人免费观看| 毛片免费全部免费观看| 成人永久免费高清| 国产性爱在线观看亚洲黄色一级片 | 精品亚洲福利一区二区| 无码AV动漫精品一区二区免费| 中文字幕视频免费在线观看| a级毛片毛片免费观看久潮| 在线观看免费av网站| 色窝窝免费一区二区三区| 国产在线不卡免费播放| 国产精品亚洲产品一区二区三区 | jlzzjlzz亚洲乱熟在线播放| 亚洲AV无码久久精品成人| 亚洲人成伊人成综合网久久| 亚洲AV一区二区三区四区| kk4kk免费视频毛片| 99久在线国内在线播放免费观看 | 99re免费在线视频| 日韩一级免费视频| 亚洲人成亚洲人成在线观看 |