瀏覽器緩存

一. 強緩存和協商緩存瀏覽器

    第一次請求資源時,會根據http頭部信息判斷是否緩存;緩存

    第二次請求資源時,會先判斷是否命中強緩存(Cache-Control和Expires),若是是則直接獲取資源,本次請求不會與服務器進行通訊;若是沒有命中,則會攜帶第一次請求時返回有關緩存的頭部信息(Last-Modified/If-Modified-Since 和 Etag/If-None-Match);若命中則直接獲取緩存資源,不然獲取新資源。服務器

  狀態碼 與服務器通訊
強緩存(本地緩存) 200(from cache) 否,直接取緩存
協商緩存 304(not modified) 是,經過服務器判斷緩存是否可用

 

 

 

二. 強緩存headercookie

  1. Expires:http1.0,GMT格式的時間字符串,緩存有效的截止時間;
  2. Cache-Control:max-age=10000:http1.1,相對值,資源第一次請求時間和設定的有效期計算出一個資源過時時間,再拿這個時間和當前時間比較;
    還有幾個經常使用值no-cache(不使用強緩存),no-store(禁止緩存數據),public(可被全部用戶緩存),private(只容許終端用戶緩存);
  3. Cache-Control優先級高於Expires;

三. 協商緩存headersession

  1. 第一次請求響應頭帶上Last-Modified/Etag,則後續請求會帶上If-Modified/If-None-Match;
  2. Last-Modified:GMT格式,最後修改時間;
    If-Modified-Since:也是GMT格式,判斷而這是否同樣;若是命中緩存,則返回304,而且不會返回資源內容,不會返回Last-Modify;
  3. Etag/If-None-Match:服務器生成的惟一標識字符串,與Last-Modified不一樣的是,當服務器返回304時,因爲Etag從新生成過,因此頭部信息仍是會把這個Etag返回,即便沒變化;
  4. 爲何有了Last-Modified還要Etag:一些文件週期性更改,但內容不變;有些文件修改頻繁,1s內修改屢次;某些服務器不能精確獲得文件最後修改時間;Etag優先於Last-Modified驗證。

四. cookie & session & localStorage & sessionStorage資源

  • cookie一般保存在瀏覽器,session一般保存在服務器端,通常來講當服務器收到請求要建立session時,首先會在客戶端監測是否包含sessionid,若是有則根據id返回session;沒有的話建立新的sessionid並相應給客戶端;一般使用cookie存儲sessionid。
  • 單個cookie不超過4kb,session無大小限制;
  • localStorage和sessionStorage通常都是5Mb,前者是永久的,後者關閉頁面即失效;通用方法:setItem(key, value),getItem(key),removeItem(key),clear(),key(index);
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息