瀏覽器載入渲染網頁過程解析--總結(三)

來源:互聯網
上載者:User

標籤:dns   hunk   不能   頁面載入速度   工具   合并   使用者輸入   use   指定   

轉自:http://blog.csdn.net/longeremmy/article/details/8030736

 

1.瀏覽器載入和渲染html的順序

1、IE下載的順序是從上到下,渲染的順序也是從上到下,下載和渲染是同時進行的。
2、在渲染到頁面的某一部分時,其上面的所有部分都已經下載完成(並不是說所有相關聯的元素都已經下載完)
3、如果遇到語義解釋性的標籤嵌入檔案(JS指令碼,CSS樣式),那麼此時IE的下載過程會啟用單獨串連進行下載。
4、並且在下載後進行解析,解析過程中,停止頁面所有往下元素的下載。阻塞載入
5、樣式表在下載完成後,將和以前下載的所有樣式表一起進行解析,解析完成後,將對此前所有元素(含以前已經渲染的)重新進行渲染。
6、JS、CSS中如有重定義,後定義函數將覆蓋前定義函數

2. JS的載入

2.1 不能並行下載和解析(阻塞下載)
2.2 當引用了JS的時候,瀏覽器發送1個js request就會一直等待該request的返回。因為瀏覽器需要1個穩定的DOM樹結構,而JS中很有可能有代碼直接改變了DOM樹結構,比如使用 document.write 或 appendChild,甚至是直接使用的location.href進行跳轉,瀏覽器為了防止出現JS修改DOM樹,需要重新構建DOM樹的情況,所以 就會阻塞其他的下載和呈現.

3.如何加快HTML頁面載入速度

1,頁面減肥
頁面的肥瘦是影響載入速度最重要的因素
刪除不必要的空格、注釋
將inline的script和css移到外部檔案
可以使用HTML Tidy來給HTML減肥,還可以使用一些壓縮公用程式來給JavaScript減肥
2,減少檔案數量
減少頁面上引用的檔案數量可以減少HTTP串連數
許多JavaScript、CSS檔案可以合并最好合并,人家財幫子都把自己的JavaScript. functions和Prototype.js合并到一個base.js檔案裡去了
3,減少網域名稱查詢
DNS查詢和解析網域名稱也是消耗時間的,所以要減少對外部JavaScript、CSS、圖片等資源的引用,不同網域名稱的使用越少越好
4,緩衝重用資料
使用緩衝吧
5,最佳化頁面元素載入順序
首先載入頁面最初顯示的內容和與之相關的JavaScript和CSS
然後載入DHTML相關的東西
像什麼不是最初顯示相關的圖片、flash、視頻等很肥的資源就最後載入
6,減少inline JavaScript的數量
瀏覽器parser會假設inline JavaScript會改變頁面結構,所以使用inline JavaScript開銷較大
不要使用document.write()這種輸出內容的方法,使用現代W3C DOM方法來為現代瀏覽器處理頁面內容
7,使用現代CSS和合法的標籤
使用現代CSS來減少標籤和映像,例如使用現代CSS+文字完全可以替代一些只有文字的圖片
使用合法的標籤避免瀏覽器解析HTML時做“error correction”等操作,還可以被HTML Tidy來給HTML減肥
8,Chunk your content
不要使用嵌套tables
<table>
  <table>
    <table>
      ..
    <table>
  <table>
<table>
而使用非嵌套tables或者divs
<table>...</table>
<table>...</table>
<table>...</table>
將基於大塊嵌套的tables的layout分解成小tables,這樣顯示時不用載入整個頁面(或大table)的內容
9,指定映像和tables的大小
如果瀏覽器可以立即決定映像或tables的大小,那麼它就可以馬上顯示頁面而不要重新做一些布局安排的工作
這不僅加快了頁面的顯示,也預防了頁面完成載入後布局的一些不當的改變
image使用height和width
table使用table-layout: fixed並使用col和colgroup標籤指定columns的width
10,根據使用者瀏覽器明智的選擇策略
IE、Firefox、Safari等等等等
11,頁面結構的例子
· HTML

    · HEAD

        · LINK ...
        CSS files required for page appearance. Minimize the number of files for performance while keeping unrelated CSS in separate files for maintenance.

        · SCRIPT. ...
        JavaScript. files for functions required during the loading of the page, but not any DHTML that can only run after page loads.
        Minimize the number of files for performance while keeping unrelated JavaScript. in separate files for maintenance.

    · BODY
    · User visible page content in small chunks (tables / divs) that can be displayed without waiting for the full page to download.

        · SCRIPT. ...
        Any scripts which will be used to perform. DHTML. DHTML script. typically can only run after the page has completely loaded and all necessary objects have been initialized. There is no need to load these scripts before the page content. That only slows down the initial appearance of the page load.
        Minimize the number of files for performance while keeping unrelated JavaScript. in separate files for maintenance.
        If any images are used for rollover effects, you should preload them here after the page content has downloaded.


4.HTML頁面載入和解析流程

1.使用者輸入網址(假設是個html頁面,並且是第一次訪問),瀏覽器向伺服器發出請求,伺服器返回html檔案; 
2.瀏覽器開始載入html代碼,發現<head>標籤內有一個<link>標籤引用外部CSS檔案; 
3.瀏覽器又發出CSS檔案的請求,伺服器返回這個CSS檔案; 
4.瀏覽器繼續載入html中<body>部分的代碼,並且CSS檔案已經拿到手了,可以開始渲染頁面了; 
5.瀏覽器在代碼中發現一個<img>標籤引用了一張圖片,向伺服器發出請求。此時瀏覽器不會等到圖片下載完,而是繼續渲染後面的代碼; 
6.伺服器返回圖片檔案,由於圖片佔用了一定面積,影響了後面段落的排布,因此瀏覽器需要回過頭來重新渲染這部分代碼; 
7.瀏覽器發現了一個包含一行Javascript代碼的<script>標籤,趕快運行它; 
8.Javascript指令碼執行了這條語句,它命令瀏覽器隱藏掉代碼中的某個<div> (style.display=”none”)。杯具啊,突然就少了這麼一個元素,瀏覽器不得不重新渲染這部分代碼; 
9.終於等到了</html>的到來,瀏覽器淚流滿面…… 
10.等等,還沒完,使用者點了一下介面中的“換膚”按鈕,Javascript讓瀏覽器換了一下<link>標籤的CSS路徑; 
11.瀏覽器召集了在座的各位<div><span><ul><li>們,“大伙兒收拾收拾行李,咱得重新來過……”,瀏覽器向伺服器請求了新的CSS檔案,重新渲染頁面。

瀏覽器載入渲染網頁過程解析--總結(三)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.