摘要:的速度明顯快于重排重繪與的區別理解了瀏覽器是如何渲染頁面之后我們再來比較這兩者就很好理解了執行的時間必須等到頁面內包括圖片的所有元素加載完畢后才能執行。
先上圖,我們再慢慢解釋,這圖就是瀏覽器加載網頁的一個過程
當我們在瀏覽器輸入一個地址(比如:http://toadw.cn),那么點擊回車后,瀏覽器是如何加載網頁的呢?
加載過程一開始瀏覽器是不知道你輸入的http://toadw.cn這個東西是什么的,也不知道要去哪里給你找這個網頁,他需要向DNS服務發出解析請求
大致的步驟如下:
瀏覽器發送toadw.cn尋址請求給DNS服務
DNS返回數據告訴瀏覽器toadw.cn的服務器地址是255.255.255.255
本地電腦緩存DNS數據,并發送請求給255.255.255.255這個服務器,然后瀏覽器和服務器根據HTTP協議進行通訊
網頁渲染瀏覽器拿到HTML代碼之后,它是如何顯示給大家看的呢?其實所謂的渲染就是講HTML代碼根據CSS定義的規則顯示在瀏覽器窗口中的這個過程
首先瀏覽器先把這個HTML文檔先轉化為DOM樹,然后根據這個DOM樹,進行渲染,轉化為可視的東西
在渲染的時候,瀏覽器從上到下依次渲染DOM樹,當發現有外鏈資源或腳本、、的時候會異步發起請求加載,同時DOM樹的解析繼續。一般我們都會把style都放在head里面,那么這樣瀏覽器就先拿到了css樣式文件,他就知道如何講每個元素繪出來放在哪個位置。
如果遇到圖片瀏覽器不會等圖片加載完再去加載,而是繼續加載,這樣就會出現個問題,當圖片加載完時,在頁面插入圖片會影響頁面的結果,瀏覽器就又要重新排布,這樣瀏覽器又要花費時間跟經歷去排布,所有如果圖片是固定的尺寸,我們在寫CSS的時候就應該給他加上寬高,瀏覽器就會預留一個位置給圖片,這樣就避免了重新排布
上文中將到的重新排布就是回流,網頁加載慢,有一部分原因就是回流,因為瀏覽器要耗更多的時間去重新排布渲染,但回流也是不可避免的,因為網頁中的一些效果,如鼠標滑過、點擊效果等引起了頁面上某些元素的占位面積、定位方式、邊距包括瀏覽器的伸縮等的變化都會發生回流。但也有些事可以避免的,例如上文中說的給圖片定死寬高。
有個和 reflow 看上去差不多的術語:repaint,中文叫重繪。如果只是改變某個元素的背景色、文字顏色、邊框顏色等等不影響它周圍或內部布局的屬性,將只會引起瀏覽器 repaint。repaint 的速度明顯快于reflow
$(img).css("width",200px)//重排 $(body).css("backgroud","#fff")//重繪window.onload()與$(document).ready()的區別
理解了瀏覽器是如何渲染頁面之后我們再來比較這兩者就很好理解了
執行的時間
window.onload必須等到頁面內包括圖片的所有元素加載完畢后才能執行。 $(document).ready()是DOM結構繪制完畢后就執行,不必等到加載完畢。
可編寫個數不停
window.onload不能同時編寫多個,如果有多個window.onload方法,只會執行一個 $(document).ready()可以同時編寫多個,并且都可以得到執行
簡化縮寫
window.onload沒有簡化寫法 $(document).ready(function(){})可以簡寫成$(function(){});也可寫成$().ready()$().load()和window.onload()的區別
這里又會聯想到 $().load()和window.onload()有沒有區別?
查看jq文檔load()事件的定義是
當指定的元素(及子元素)已加載時,會發生 load() 事件。且$(window).load 方法是 $(window).on("load",handler) 的shortcut
所以$(window).load()和window.onload()是沒區別的,唯一的小區別就是$(window).load()可以寫很多個。
最后來個小練習如何用原生的JS實現$(doucment).ready()?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86902.html
摘要:的速度明顯快于重排重繪與的區別理解了瀏覽器是如何渲染頁面之后我們再來比較這兩者就很好理解了執行的時間必須等到頁面內包括圖片的所有元素加載完畢后才能執行。 先上圖,我們再慢慢解釋,這圖就是瀏覽器加載網頁的一個過程 showImg(https://segmentfault.com/img/remote/1460000008648335?w=516&h=425); 當我們在瀏覽器輸入一個地址...
摘要:歡迎來我的個人站點性能優化其他優化瀏覽器關鍵渲染路徑開啟性能優化之旅高性能滾動及頁面渲染優化理論寫法對壓縮率的影響唯快不破應用的個優化步驟進階鵝廠大神用直出實現網頁瞬開緩存網頁性能管理詳解寫給后端程序員的緩存原理介紹年底補課緩存機制優化動 歡迎來我的個人站點 性能優化 其他 優化瀏覽器關鍵渲染路徑 - 開啟性能優化之旅 高性能滾動 scroll 及頁面渲染優化 理論 | HTML寫法...
閱讀 2954·2021-11-11 16:55
閱讀 515·2021-09-27 13:36
閱讀 1073·2021-09-22 15:35
閱讀 2908·2019-08-30 12:46
閱讀 3125·2019-08-26 17:02
閱讀 1826·2019-08-26 11:56
閱讀 1295·2019-08-26 11:47
閱讀 423·2019-08-23 17:01