前端效能優化 快取優化

2021-10-23 20:23:49 字數 1381 閱讀 4319

控制瀏覽器強快取主要靠兩個響應頭部欄位來實現:expirescache-control,瀏覽器在訪問靜態資源時,會首先判斷該資源是否做了強快取。如果發現是強快取並且快取還在有效期內,那就不會去傳送http請求,而直接使用本地的快取(這個快取可能來自於記憶體,也可能來自本地磁碟空間)。其中expires表示資源的過期時間(gmt格式),是乙個時間點。cache-control使用max-age來表示資源可以被快取多久,是乙個時間區間。如果強快取過期了,那就會去協商快取。

以上二者的優先順序cache-control會高於expires。如果設定了cache-control那就不會再去檢查expires了。

強快取有乙個明顯的缺點就是,無法知道當前伺服器上的資源有沒有發生改變。

協商快取主要靠兩對請求頭部欄位和響應頭部字段組成。分別為last-modified,if-modified-sinceetag,if-none-matched

last-modified會返回資源最近乙個更新的時間,精確到秒。每次這個時間在請求時會通過請求頭if-modified-since帶到伺服器端。伺服器端對這個字段進行驗證,如果發現這個資源並沒有改動,則會返回304的響應碼。如果發生改動了會返回200響應碼並且返回最新的資源。

etag這個欄位是由伺服器端返回,並且可以將這個字段作為資源的唯一的標識,當內容發生變化之後,這個etag也會隨之改變。下一次請求時會由if-none-matched帶上這個etag,伺服器端對這個字段進行驗證,如果發現這個資源並沒有改動,則會返回304的響應碼。如果發生改動了會返回200響應碼並且返回最新的資源。

以上二者的優先順序etag的方式會高於last-modified的方式,如果請求頭帶上了if-modified-since,那就不會再去驗證if-none-matched

這兩者都是強快取的結果,其中前者表示快取來自記憶體,這種快取會隨著瀏覽器關閉而消失。後者表示快取來自硬碟,不會隨著瀏覽器的關閉而消失。控制到底是from memory cache還是from disk cache是通過響應頭的etag來實現的。如果有etag字段,那麼瀏覽器會將本次快取寫入硬碟。

web前端效能優化 快取

雅虎的16條優化準則,作為前端開發工程師,都是耳熟能詳,信手拈來。但很多時候也能難完全的做得到,一些準則跟工程原則是衝突的,難以落實起來。js檔案放尾部,css檔案放頭部等,這些基本的優化點還是可以做到,但是有時候遇到網速慢的情況,會出現一段時間的白屏,從使用者體驗的角度來說,還是有提公升的空間。根...

前端效能優化之 快取

一.http協議頭控制 cache control用於控制檔案在本地快取有效時長。最常見的,比如伺服器回包 cache control max age 600表示檔案在本地應該快取,且有效時長是600秒 從發出請求算起 在接下來600秒內,如果有請求這個資源,瀏覽器不會發出http請求,而是直接使用...

前端效能優化 快取篇SDK

1.把前端最常用的資源css js存在本地 1.1 前端快取技術sessionstorage 優點 臨時儲存神器,關閉頁面標籤自動 不可以跨頁面互動。取值的時候有兩種方法,一種是用sessionstorage.getitem 鍵名 一種是直接取物件的方法 sessionstorage.鍵名 注意 1...