對於前端緩存的理解(緩存機制和緩存類型)

前端緩存,主要分為兩種,HTTP緩存和瀏覽器緩存。

HTTP緩存,主要存在於服務器請求傳輸時需要記錄的一些參數,在服務器代碼上設置。

瀏覽器緩存,主要是由前端JS代碼主動存儲的某些參數。

緩存是前端項目性能優化中簡單高效的一種方式。優秀的緩存策略可以縮短網頁請求資源的距離,減少延遲,並且由於緩存文件可以重複利用,還可以減少帶寬,降低網絡負荷。例如:前端需要發起一個數據請求,可以分為發起網絡請求、後端處理、瀏覽器響應三個步驟。瀏覽器緩存可以幫助我們在第一和第三步驟中優化性能。比如說直接使用緩存而不發起請求,或者發起了請求但後端存儲的數據和前端一致,那麼就沒有必要再將數據回傳回來,這樣就減少了響應數據。

 

 

瀏覽器與服務器通信的方式為應答模式,即是:瀏覽器發起HTTP請求 – 服務器響應該請求。那麼瀏覽器第一次向服務器發起該請求後拿到請求結果,會根據響應報文中HTTP頭的緩存標識,決定是否緩存結果,是則將請求結果和緩存標識存入瀏覽器緩存中。

緩存流程兩點總結:
1、瀏覽器每次發起請求,都會在瀏覽器緩存里尋找該請求的標識和緩存內容。
2、瀏覽器每次收到返回結果,都會在瀏覽器緩存里保存該標識和緩存內容。
 
什麼叫強制緩存?
   強制緩存就是,強制從瀏覽器緩存中查找該次請求的標識和內容,然後根據該結果的緩存規則,來決定是否使用瀏覽器緩存。
(1)沒有該請求的緩存和標識,強制緩存失效,向服務器發送新請求。
(2)存在該請求的緩存和標識,但是結果已過期,強制緩存失效,改為協商緩存。
(3)存在該請求的緩存和標識,未過期,使用該緩存資源,返回結果。
什麼叫協商緩存?
   協商緩存就是強制緩存失效後,瀏覽器攜帶緩存標識向服務器發起請求,由服務器根據緩存標識決定是否使用緩存的過程。此時的請求頭裡會有Etag參數,如果請求的Etag參數和服務器上的Etag參數相同,那說明服務器的資源沒有更新,則協商緩存生效,繼續使用瀏覽器的緩存資源,如果請求的Etag參數和服務器的Etag參數不同,那說明服務器的資源有更新,則協商緩存不生效,由服務器重新打包最新資源響應返回給瀏覽器。
 
強制緩存和協商緩存的優先級?
強制緩存優先於協商緩存。