前端性能優(yōu)化之n種方法

前端性能優(yōu)化有很多種,我們在實際工作中或許也就用到那么幾種。但是,在面試的時候,知道的不知道的,要說很多種,下面是我在工作學習中遇到的,不全,希望大家補充。

1、減少HTTP請求。

盡量合并圖片、CSS、JS。比如加載一個頁面,如果有5個css文件的話,那么會發(fā)出5次http請求,這樣會讓用戶第一次訪問你的頁面的時候會長時間等待。而如果把這個5個文件合成一個的話,就只需要發(fā)出一次http請求,節(jié)省網(wǎng)絡請求時間,加快頁面的加載。

2、把CSS放到頂部

因為網(wǎng)頁上的資源加載時從上網(wǎng)下順序加載的,所以css放在頁面的頂部能夠優(yōu)先渲染頁面,讓用戶感覺頁面加載很快。

3、把JS放到底部

js加載時同步加載,會對后續(xù)的資源造成阻塞,必須得等js加載完才去加載后續(xù)的文件 ,所以就把js放在頁面底部最后加載。

4、將CSS和JS放到外部文件中

目的是緩存文件。 但有時候為了減少請求,也會直接寫到頁面里,需根據(jù)PV和IP的比例權衡。

5、精簡CSS和JS

這里就涉及到css和js的壓縮了。比如一個css文件,把文件內(nèi)的空格回車全部去掉,減少文件的大小。grunt,glup都可以壓縮css、js文件。
gulp的使用方法在我的專欄-gulp學習筆記,圖文并茂,有需要的可以移步。

6、刪除重復的JS和CSS

重復調(diào)用腳本,除了增加額外的HTTP請求外,多次運算也會浪費時間。在IE和Firefox中不管腳本是否可緩存,它們都存在重復運算JavaScript的問題。

7、css選擇符優(yōu)化

因為css是從右向左解析的,根據(jù)這個規(guī)則,盡量使右邊的樣式唯一

8、避免空的src和href

當link標簽的href屬性和script標簽的src屬性為空時候,瀏覽器渲染的時候會把當前頁面的URL作為它們的屬性值,從而把頁面的內(nèi)容加載進來作為它們的值。所以要避免犯這樣的疏忽。

9、將CSS和JS放到外部文件中

這樣做的目的是緩存文件 但有時候為了減少請求,也會直接寫到頁面里,需根據(jù)PV和IP的比例權衡。

10、縮小favicon.ico并緩存

11、避免使用CSS表達式

舉個css表達式的例子

font-color:expression((new Date()).getHours()%3 ? "#fff" : "#aaa");

這個表達式會持續(xù)的在頁面上計算樣式,影響頁面的性能。并且css表達式只被IE支持。

12、緩存AJAX請求

異步請求同樣的造成用戶等待,所以使用ajax請求時,要主動告訴瀏覽器如果該請求有緩存就去請求緩存內(nèi)容。如下代碼片段, cache:true就是顯式的要求如果當前請求有緩存的話,直接使用緩存
異步請求同樣的造成用戶等待,所以使用ajax請求時,要主動告訴瀏覽器如果該請求有緩存就去請求緩存內(nèi)容。如下代碼片段, cache:true就是顯式的要求如果當前請求有緩存的話,直接使用緩存

  $.ajax({
  url : 'url',
  dataType : "json",
  cache: true,
  success : function(son, status){},
  error : function(){}
})

13、使用GET來完成AJAX請求

在安全性能要求允許的情況下,使用GET來完成AJAX請求。當使用XMLHttpRequest時,瀏覽器中的POST方法是一個“兩步走”的過程:首先發(fā)送文件頭,然后才發(fā)送數(shù)據(jù)。因此使用GET獲取數(shù)據(jù)時更加有意義。

15、減少DOM操作

因為每次操作DOM,都會帶來repaint和refolw

16、減少Cookie的大小

Cookie里面別塞那么多東西,因為每個請求都得帶著他跑。

17、使用CDN

網(wǎng)站上靜態(tài)資源即css、js全都使用cdn分發(fā),圖片也一樣。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容