1. 程式人生 > 其它 >瀏覽器快取和本地儲存

瀏覽器快取和本地儲存

這篇文章只是對另一位大佬的文章做一下小總結,詳情可以訪問:https://segmentfault.com/a/1190000017185195
瀏覽器快取可以減少資料請求,使網站響應更快,減少頻寬,降低網路負荷


瀏覽器的快取方式(強快取和協商快取)

1. 強快取

瀏覽器訪問資源時不會發送請求,直接讀取瀏覽器快取,並且在chrome控制檯的network選項中可以看到size顯示from disk
cache或from memory cache

2. 協商快取

瀏覽器在訪問資源時會向伺服器傳送一個詢問請求,伺服器收到請求後,判斷是否使用快取,若不使用快取,則伺服器會給瀏覽器返回資源

  • 根據時間判斷是否使用快取

瀏覽器在請求時請求頭攜帶If-Modified-Since,伺服器在響應請求時攜帶Last-Modified
瀏覽器第一次請求時,伺服器會返回資源和該資源的最後修改時間(Last-Modified),瀏覽器會將這個資源和時間快取下來
之後瀏覽器再次訪問資源時,會攜帶If-Modified-Since(瀏覽器快取下來的最後修改時間)
伺服器收到請求後會對比If-Modified-Since和該資源的最後修改時間是否匹配,若匹配則使用快取,若不匹配則返回新的資源和最後修改時間(Last-Modified)

  • 根據唯一標識判斷是否使用快取

瀏覽器在請求時請求頭攜帶If-None-Match,伺服器在響應請求時攜帶ETag
瀏覽器第一次請求時,伺服器會返回資源和該資源的唯一識別符號ETag,瀏覽器會將這個資源和ETag快取下來
之後瀏覽器再次訪問資源時,會攜帶If-None-Match(瀏覽器快取下來的ETag)
伺服器收到請求後會對比If-None-Match和該資源的ETag是否匹配,若匹配則使用快取,若不匹配則返回新的資源和ETag

這兩者極為相似,唯一區別就是一個是通過最後修改時間來判斷資源是否過期,一個是通過唯一標識來判斷資源是否過期,目前常用第二種,精度高,但是效能沒有第一種好

常用本地儲存

一般常用的本地儲存包括:localStorage,sessionStorage和cookie

  1. localStorage、sessionStorage主要是前端開發人員,在前端設定,一旦資料儲存在本地後,就可以避免再向伺服器請求資料,因此減少不必要的資料請求,減少資料在瀏覽器和伺服器間不必要地來回傳遞
  2. localStorage 儲存不受時間限制,除非使用者自己刪除,否則不會消失
  3. sessionStorage 儲存受時間限制,當前視窗一旦關閉,內容就會消失