前端 頁面效能

2021-08-21 13:25:02 字數 1605 閱讀 3542

提公升頁面效能的方法?

非核心**非同步載入——非同步載入的方式——非同步載入的區別

利用瀏覽器快取——快取的分類——快取的原理

使用cdn(網路優先)——本質上是乙個快取,將資料快取在離使用者最近的地方,一般快取的是靜態資源

將css放在頁面最上面,將js放在頁面最下面(頁面從上到下載入)

把js和css提取出來放在外部檔案中(優點:減少了http體積,提高了js和css的復用性,提供可維護性;缺點:增加了http 請求,可通過快取解決)

1、非同步載入的區方式:

2、非同步載入的區別:

(1)defer是在html解析完之後才執行,如果是多個,按照載入的順序依次執行

(2)async是在載入完之後立即執行,如果是多個,執行順序和載入順序無關

3、瀏覽器快取——強快取、協商快取

(1)強快取,不向伺服器發請求,直接從本地硬碟或記憶體中獲取。利用http響應報文中的expires和cache-control兩個欄位來控制,表示資源的快取時間。

expires:該字段是http/1.0的規範,是乙個絕對時間的gmt格式,這個時間代表資源的失效時間,在該時間內即:命中強快取。缺點:當客戶端與伺服器時間出現較大偏差,就會出現混亂。

cache-control:為了解決expires出現的問題,http/1.1新增了cache-control。主要是利用max-age來進行判斷,是乙個相對時間。如:cache-control:max-age=600,代表著資源的有效期是600秒。

(2)協商快取,向伺服器發出驗證,如果資源無更改,不重新返回資源內容,資源內容從本地獲取。需要有伺服器來確定客戶端快取資源是否可用。主要涉及header中兩個字段:last-modified/if-modified-since或etag/if-none-match,這兩種欄位都是成對出現的。若第一次響應頭沒有last-modified或etag,則後續的請求頭部也不會有if-modified-since或if-none-match。

last-modified/if-modified-since:瀏覽器第一次請求乙個資源的時候,伺服器返回的header中會加上last-modified,它是乙個時間標識該資源的最後修改時間。當瀏覽器再次請求該資源時,http請求頭部會帶上if-modified-since,該值為上次響應報文頭部的last-modified的值,伺服器接收到if-modified-since,會根據資源的最後修改時間來判斷是否命中協商快取,如果命中,返回304(not modified),並且不會返回last-modified和無響應body。否則返回200,並且返回last-modified和有響應的body。

etag/if-none-match:它們的值不是乙個時間標識,而是乙個校驗碼。etag可以保證每乙個資源都是唯一的,資源變化都會導致etag變化,伺服器根據接收到的if-none-match來判斷是否命中協商快取。但是當伺服器返回304的時候,由於etag重新生成過,響應頭部也會帶上etag,即使它跟之前的沒有變化。

與快取相關的http頭:expires,cache-control,last-modified,if-modified-since,etag,if-none-match

前端頁面效能優化

最近參加了兩次社招,發現社招面試都會問到效能優化以及框架原理。當中效能優化即使我知道好幾種,然而我面試時總是很容易想不起來,只答出了兩三種。因此,寫一篇部落格來對效能優化做一下研究,加深理解。對於前端效能優化自然要關注首屏開啟速度,而這個速度,很大因素是花費在網路請求上,那麼怎麼減少網路請求的時間呢...

web前端頁面效能測試

特別是使用者對系統要求越來越高,除了要求功能完備,對介面的美觀 易用性也提出了更高的要求,越炫的頁面也就意味著頁面中要包含更多的指令碼 樣式表 和flash,頁面的資料量也就越大,這對web系統的效能提出了極大的挑戰。減少請求和響應的往返次數 http快取是最好的減少客戶端伺服器端往返次數的辦法。快...

前端小遊戲頁面效能優化

公司是做教育類遊戲開發,以前是用flash製作,現在開始使用createjs框架開發canvas遊戲。今天突然收到乙個任務 遊戲在ipad2下面遊戲會打不開,然後自動重新整理,再載入不出來,然後再重新整理,陷入了死迴圈 通過度娘得知此問題是由越獄或記憶體引起的。排除越獄可能 因為沒有越獄 剩下就是記...