瀏覽器加載和渲染html的順序

文章是從網(wǎng)上看到的,覺很好,記錄下來,以供學(xué)習(xí),原文點(diǎn)擊

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

1、IE下載的順序是從上到下,渲染的順序也是從上到下,下載和渲染是同時(shí)進(jìn)行的。
2、在渲染到頁面的某一部分時(shí),其上面的所有部分都已經(jīng)下載完成(并不是說所有相關(guān)聯(lián)的元素都已經(jīng)下載完)
3、如果遇到語義解釋性的標(biāo)簽嵌入文件(JS腳本,CSS樣式),那么此時(shí)IE的下載過程會啟用單獨(dú)連接進(jìn)行下載。
4、并且在下載后進(jìn)行解析,解析過程中,停止頁面所有往下元素的下載。阻塞加載
5、樣式表在下載完成后,將和以前下載的所有樣式表一起進(jìn)行解析,解析完成后,將對此前所有元素(含以前已經(jīng)渲染的)重新進(jìn)行渲染。
6、JS、CSS中如有重定義,后定義函數(shù)將覆蓋前定義函數(shù)

2. JS的加載

2.1: 不能并行下載和解析(阻塞下載)

2.2:當(dāng)引用了JS的時(shí)候,瀏覽器發(fā)送1個(gè)js request就會一直等待該request的返回。因?yàn)闉g覽器需要1個(gè)穩(wěn)定的DOM樹結(jié)構(gòu),而JS中很有可能有代碼直接改變了DOM樹結(jié)構(gòu),比如使用 document.write 或 appendChild,甚至是直接使用的location.href進(jìn)行跳轉(zhuǎn),瀏覽器為了防止出現(xiàn)JS修改DOM樹,需要重新構(gòu)建DOM樹的情況,所以 就會阻塞其他的下載和呈現(xiàn).

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

1,頁面減肥

頁面的肥瘦是影響加載速度最重要的因素
刪除不必要的空格、注釋
將inline的script和css移到外部文件
可以使用HTML Tidy來給HTML減肥,還可以使用一些壓縮工具來給JavaScript減肥

2,減少文件數(shù)量

減少頁面上引用的文件數(shù)量可以減少HTTP連接數(shù)
許多JavaScript、CSS文件可以合并最好合并,人家財(cái)幫子都把自己的JavaScript. functions和Prototype.js合并到一個(gè)base.js文件里去了

3,減少域名查詢

DNS查詢和解析域名也是消耗時(shí)間的,所以要減少對外部JavaScript、CSS、圖片等資源的引用,不同域名的使用越少越好

4,緩存重用數(shù)據(jù)

使用緩存吧
5,優(yōu)化頁面元素加載順序
首先加載頁面最初顯示的內(nèi)容和與之相關(guān)的JavaScript和CSS
然后加載DHTML相關(guān)的東西
像什么不是最初顯示相關(guān)的圖片、flash、視頻等很肥的資源就最后加載

6,減少inline JavaScript的數(shù)量

瀏覽器parser會假設(shè)inline JavaScript會改變頁面結(jié)構(gòu),所以使用inline JavaScript開銷較大
不要使用document.write()這種輸出內(nèi)容的方法,使用現(xiàn)代W3C DOM方法來為現(xiàn)代瀏覽器處理頁面內(nèi)容
7,使用現(xiàn)代CSS和合法的標(biāo)簽
使用現(xiàn)代CSS來減少標(biāo)簽和圖像,例如使用現(xiàn)代CSS+文字完全可以替代一些只有文字的圖片
使用合法的標(biāo)簽避免瀏覽器解析HTML時(shí)做“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,這樣顯示時(shí)不用加載整個(gè)頁面(或大table)的內(nèi)容

9,指定圖像和tables的大小

如果瀏覽器可以立即決定圖像或tables的大小,那么它就可以馬上顯示頁面而不要重新做一些布局安排的工作
這不僅加快了頁面的顯示,也預(yù)防了頁面完成加載后布局的一些不當(dāng)?shù)母淖?br> image使用height和width
table使用table-layout: fixed并使用col和colgroup標(biāo)簽指定columns的width

10,根據(jù)用戶瀏覽器明智的選擇策略
IE、Firefox、Safari等等等等

11,頁面結(jié)構(gòu)的例子

  <HTML>
      <header> 
        <link>
        //頁面外觀所需的CSS文件。盡量減少性能文件的數(shù)量,同時(shí)保持無關(guān)的CSS在單獨(dú)的文件中進(jìn)行維護(hù)。
        </link
        <script>
        //JavaScript。在頁面加載過程中所需要的功能的文件,但沒有任何DHTML,只能運(yùn)行在頁面加載。 
        //在保持無關(guān)JavaScript的情況下最小化性能文件的數(shù)量。在單獨(dú)的文件中進(jìn)行維護(hù)。
        </script>
      </header>
    <body> 
    //用戶可見的頁面內(nèi)容的小塊(tables/ div),可以無需等待下載完整的頁面顯示。
        <script>
        //將用于執(zhí)行的任何腳本。DHTML。DHTML腳本。通常只能在頁面完全加載后運(yùn)行,所有必需的對象都已初始化。不需要在頁面內(nèi)容之前加載這些腳本。這只會減慢頁面加載的初始外觀。 
       // 在保持無關(guān)JavaScript的情況下最小化性能文件的數(shù)量。在單獨(dú)的文件中進(jìn)行維護(hù)。
       //如果用于翻轉(zhuǎn)效果的任何圖像,您應(yīng)該在頁面內(nèi)容下載后將其預(yù)加載到這里。
        </script>
    </body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容