瀏覽器快取和本地儲存
這篇文章只是對另一位大佬的文章做一下小總結,詳情可以訪問: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
- localStorage、sessionStorage主要是前端開發人員,在前端設定,一旦資料儲存在本地後,就可以避免再向伺服器請求資料,因此減少不必要的資料請求,減少資料在瀏覽器和伺服器間不必要地來回傳遞
- localStorage 儲存不受時間限制,除非使用者自己刪除,否則不會消失
- sessionStorage 儲存受時間限制,當前視窗一旦關閉,內容就會消失