1:一個網站在瀏覽器端是如何進行渲染的呢?
2: HTML渲染過程的一些特點
(1)順序執行、並發加載
順序執行:運用詞法分析能力從頭開始順序解析,
並發加載:引入的外部資源,css,js,可以進行優化,單個域名並發加載有限,CDN上設置三到四個。
(2)是否阻塞 (css加載是否阻塞js加載,==)
css head中阻塞頁面的渲染 避免頁面的閃動:在CSS加載完后,DOM樹有樣式的
css阻塞js的執行 css加載完會會js阻塞,js可能對css樣式操作
css不阻塞外部腳本的加載 預資源加載器
js阻塞:
直接引入的js阻塞頁面的渲染 (onload事件)
js不阻塞資源的加載
js順序執行,阻塞后續js邏輯的執行(單線程)
(3)依賴關系
頁面渲染依賴於css的加載
js的執行順序的依賴關系
js邏輯對於dom節點的依賴關系
(4)引入方式
Css:Link,import, 直接引入 defer async異步動態引入js
加載和執行的一些優化點:
(1)css 樣式表置頂
(2)用 link 代替 import
(3)js 腳本置底
(4)合理使用 js 的異步加載能力
3:懶加載和預加載
懶加載:(1)圖片進入可視區域之后請求資源,對於電商,頁面很長的場景,減少無效的資源加載(單頁應用,觀看的時候才去加載),(2)並發加載的資源過多會影響網站的正常使用。
具體實現懶加載:圖片的src的地址被改變的時候被加載。監聽滑動的事件,當圖片進入可視區域的時候才去加載。
預加載:與懶加載相反,預加載靜態資源使用之前提前進行請求。直接從緩存中進行加載,不需要發送請求。
懶加載實踐:
預加載實踐: