cookie、session、cache-control等

前言

首先咱們來複習一下HTTP的相關知識,關於請求與響應組成部分詳情知識請查看這
Chrome客戶端向server發請求request,HTTP是80端口,HTTPS則是443端口。
server會對Chrome客戶端做出響應response
響應頭包括cookie,cache-control。segmentfault

cookie

  • 服務器經過 Set-Cookie 響應頭給客戶端一串字符串
  • 服務器獲得 Cookie 後,客戶端每次訪問相同域名的網頁時,必須帶上這段字符串
  • 客戶端要在一段時間內保存這個Cookie
  • Cookie 是有有效期的,默認在用戶關閉頁面後就失效,後臺代碼能夠任意設置 Cookie 的過時時間
  • 大小大概在 4kb 之內
  • Cookie 存在的問題在於其可被用戶能夠隨意篡改

Session

  • 將 SessionID(隨機數)經過 Cookie 發給客戶端
  • 客戶端訪問服務器時,服務器讀取 SessionID
  • 服務器有一塊內存(哈希表)保存了全部 session
  • 經過 SessionID 咱們能夠獲得對應用戶的隱私信息,如 id、email
  • 這塊內存(哈希表)就是服務器上的全部 session

LocalStorage

  • LocalStorage 跟 HTTP 無關
  • HTTP 不會帶上 LocalStorage 的值
  • 只有相同域名的頁面才能互相讀取 LocalStorage(沒有同源那麼嚴格)
  • 每一個域名 localStorage 最大存儲量爲 5Mb 左右(每一個瀏覽器不同)
  • 經常使用場景:記錄有沒有提示過用戶(沒有用的信息,不能記錄密碼)
  • LocalStorage 永久有效,除非用戶清理緩存

SessionStorage(會話存儲)

一、二、三、4 同上瀏覽器

  • SessionStorage 在用戶關閉頁面(會話結束)後就失效。

Cache-Control

cache-control可讓瀏覽器在一段時間內不訪問服務器(使用max-age,如response.setHeader('Cache-Control','max-age=300000000')),直接用本地的硬盤或內存做爲響應,這樣可以節省渲染頁面的時間;當咱們更新頁面時,只要更新一下url路徑便可,這樣瀏覽器就不會再使用緩存而是去下載最新的版本。緩存

Expires

Expires 的使用方法,如:
response.setHeader('Expires','Sun,04 Feb 2018 14:55:08 GM')
當設置了max-age/s-max-age指令的Cache-Control響應頭時,Expires會被忽略。
Cache-Control和Expires 區別在於?
Cache-Control是設置多久過時的,而Expires則是設置何時過時。咱們應該優先使用Cache-Control,由於Expires 設置的過時時間指的是本地時間,而咱們不能保證用戶的本地時間是否正確。服務器

相關文章
相關標籤/搜索