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
- 常用於商城購物車
- 儲存登入資訊
- 同一使用者瀏覽不同頁面
- 防止非法登入