localStorage 與 sessionStorage / cookie 和 session

紫Young菌發表於2018-08-15

localStorage、sessionStorage 這兩個都是html5的新特性,用於儲存資料,存在於瀏覽器端中

localStorage

  • 不會消失,除非手動清理
  • 儲存檔案不超過5M
  • 只能存鍵值對性質的字串,可以通過json字串來存,可用到方法 stringify parse
  • getItem setItem claer等方法(與sessionStorage相同)
  • 用於長期儲存的資料

sessionStorage

  • 相當於和瀏覽器的會話視窗,關閉資料即消失
  • 儲存檔案不超過5M
  • 只能存鍵值對性質的字串,可以通過json字串來存,可用到方法 stringify parse
  • getItem setItem claer等方法(與sessionStorage相同)
  • 常用語儲存敏感資訊,賬號密碼等

cookie 和 session都是用來跟蹤瀏覽器使用者身份用

cookie

  • 一般會設定過期時間,存在於硬碟記憶體中,關閉瀏覽器如果沒過期資料也仍會存在,如未設定,則生命週期隨瀏覽器關閉而結束
  • 儲存在瀏覽器端
  • 以文字的方式儲存字串,大小不能超過4k
  • 由於可能會面臨cookie欺騙,cookie截獲等,所以安全性相對更低
  • 每次訪問都要傳送cookie給伺服器,浪費頻寬。並且使用者可以禁用cookie,會導致無法按照預期互動
  • cookie有路徑的概念,可以限制其路徑(需要進一步瞭解)
  • 用於判斷使用者是否登陸過該網站,可以自動登入或者記住密碼
  • 儲存上次的登入時間以及登入頁面
  • 常用的閱讀人數等可以根據這個進行

session

  • 儲存在伺服器端
  • 當伺服器收到建立session的請求時時,首先會檢查客戶端請求中是否包含sessionid(一般存在於cookie中)。如果有sessionid,伺服器就會根據這個id返回對應session物件。如果沒有sessionid,伺服器會建立新的session物件,並把sessionid在本次響應中返回給客戶端。在互動中瀏覽器按照規則將sessionid傳送給伺服器。當瀏覽器不支援Cookie(或者使用者禁用cookie)的時候,將會重寫URL將SessionID拼接到訪問地址後。
  • session通過類似與Hashtable的資料結構來儲存,能支援任何型別的物件(session中可含有多個物件)
  • session大小沒有限制,但是資料量越大,會佔用伺服器,線上人數較多時,容易導致伺服器當機
  • 安全性更高,要破解session需要先破解cookie,並且sessionid是需要登入的或者啟動session_start,相對需要更進一步的操作。sessionID是加密的,並且啟動第二次session_start時,第一次就會失效,sessionID就會sessionID
  • 常用於商城購物車
  • 儲存登入資訊
  • 同一使用者瀏覽不同頁面
  • 防止非法登入
以上,下次聊聊快取

相關文章