2020-3月份前端面試總結——前端性能優化相關

前端性能優化

備註: + 代表被問到的次數,沒有 + 代表自己整理了,但沒被問到

1.整個前端性能提升大致分爲幾類

​ 網絡性能

​ 運行性能

(1.js css 2.圖片 3.緩存預加載 4.SSR 5.多域名加載 6.負載均衡)

2.爲什麼把<scrpit><body>後面+

這裏是瀏覽器加載一個有 <script> 標籤的網站發生的事情:

  1. 拉取 HTML 頁面
  2. 開始解析 HTML
  3. 解析到 <script> 標籤之後準備獲取 script 文件.
  4. 瀏覽器獲取script文件。同時,html 解析中斷並且阻斷頁面上其他html的解析。
  5. 一段時間後,script下載完成並且執行
  6. 繼續解析HTML文檔的其他部分(解析script之後的html代碼)

第4步導致了不好的用戶體驗,直到script文件全部下載完成之前HTML都不能得到解析。

3.base64爲什麼能提升性能,缺點

​ 減少http請求

​ 缺點: 編解碼需要時間,體積變大

4.前端開發有哪些提升性能的點+

​ 緩存利用:緩存Ajax,使用CDN,使用外部js和css文件以便緩存,添加Expires頭,服務端配置Etag,減少DNS查找等

​ 請求數量:合併樣式和腳本,使用css圖片精靈,初始首屏之外的圖片資源按需加載,靜態資源延遲加載。

##從輸入url到顯示頁面都發生了什麼+

  • 輸入url,常見的http協議的端口號是80,https是443

  • 查看瀏覽器是否有緩存,其中分爲強制緩存協商緩存

    強制緩存:判斷HTTP首部字段:cache-control表示存儲的文件在多長時間內均有效、Expires表示到達系統某個時間內數據均有效

    協商緩存:通過HTTP的last-modified服務器返回的字段,表示最後一次更新的時間,Etag是資源的實體標識(哈希字符串),當資源內容更新時,Etag會改變。服務器會判斷Etag是否發生變化,如果變化則返回新資源,否則返回304。

  • dns查詢,分爲迭代查詢和遞歸查詢

  • TCP三次握手建立連接

  • 瀏覽器向服務器發送HTTP請求

  • 瀏覽器接收響應

    服務器在收到瀏覽器發送的HTTP請求之後,會將收到的HTTP報文封裝成HTTP的Request對象,並通過不同的Web服務器進行處理,處理完的結果以HTTP的Response對象返回,主要包括狀態碼,響應頭,響應報文三個部分。

    狀態碼主要包括以下部分

    1xx:指示信息–表示請求已接收,繼續處理。

    2xx:成功–表示請求已被成功接收、理解、接受。

    3xx:重定向–要完成請求必須進行更進一步的操作。

    4xx:客戶端錯誤–請求有語法錯誤或請求無法實現。

    5xx:服務器端錯誤–服務器未能實現合法的請求。

  • 頁面渲染

    其中會涉及到reflow(迴流,會導致重新渲染)和repaint(重繪,只會重畫一部分)。

    減少reflow/repaint的措施:+

    1. 不要一條一條地修改 DOM 的樣式。與其這樣,還不如預先定義好 css 的 class,然後修改 DOM 的 className。
    2. 不要把 DOM 結點的屬性值放在一個循環裏當成循環裏的變量。
    3. 爲動畫的 HTML 元素設置 fixed 或 position 的 absoult,那麼修改他們的 CSS 是不會 reflow 的。
    4. 千萬不要使用 table 佈局。因爲可能很小的一個小改動會造成整個 table 的重新佈局。

git常用操作+

git commit -m … 添加描述

git push 上傳

git pull 下拉

git checkout -b 分支名 創建新分支

git merge … 合併分支

git log 查看記錄

git reset fileName 撤銷commit -m

git branch -vv 查看本地分支

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章