HTML學習筆記(七) Web Storage

Web Storage 允許在瀏覽器保存用戶數據,具體分爲兩種,一種是 localStorage,一種是 sessionStorage

對於客戶端的存儲方式,類似的還有早期乃至現在還廣泛使用的 cookie,它們之間的區別如下:

cookie localStorage sessionStorage
與服務端的通信 在每次請求中都會攜帶 不與服務端通信 不與服務端通信
數據的生命週期 設置的失效時間前有效 永久有效,除非主動刪除 在瀏覽器關閉前有效
數據的作用範圍 設置的域名及其子域名 在所有同源窗口之間共享 不能在不同窗口之間共享
儲存的數據大小 一般不超過 4KB 一般在 5MB 左右 一般在 5MB 左右

Web Storage API 繼承 window 對象,並提供兩個新屬性,window.localStoragewindow.sessionStorage

它們都是一個對象,常見的屬性和方法如下:

  • length:保存的數據條數
  • setItem(key, value):保存數據
  • getItem(key):獲取指定數據
  • removeItem(ket):刪除指定數據
  • clear():刪除所有數據
  • key(index):根據索引獲取鍵名
if (window.localStorage) {
    var storage = window.localStorage
    storage.setItem('username', 'admin')
    storage.setItem('password', '12345')
    let username = storage.getItem('username')
    let password = storage.getItem('password')
    console.log(username) // admin
    console.log(password) // 12345
    console.log(storage.length) // 2
    storage.removeItem('password')
    console.log(storage.length) // 1
    storage.clear()
}

最後順便來補充一下 cookie 和 session 的相關知識

我們知道,HTTP 協議是無狀態的,也就是說每次發出的請求都是獨立的,這個時候就會造成很多的不便

比如,用戶在一個請求中登陸之後,對於他發出的另外一個請求,服務器還是無法識別用戶的身份

而 cookie 和 session 的出現都是爲了記錄用戶的信息,從而在多次請求中識別用戶的身份

cookie 的運作機制如下:

  • 服務器在響應中通過 set-cookie 頭部要求瀏覽器設置 cookie
  • 瀏覽器在收到響應後,如果該瀏覽器支持使用 cookie,那麼就會將 cookie 保存到文件
  • 瀏覽器在以後每次發出請求時,都會在請求中通過 cookie 頭部帶上 cookie 信息
  • 服務器在收到請求後,根據 cookie 信息識別用戶身份

session 的運作機制如下:

  • 服務器創建一個唯一的標識,並將這個標識和對應的 session 信息保存下來,然後將這個標識發給瀏覽器

    保存 session 信息的方式常見的有三種,一種是保存在內存中,一種是保存在文件中,一種是保存在數據庫中

  • 瀏覽器在收到這個標識後,在以後每次發出請求時,都會帶上這個標識

    帶上標識的方式常見的有兩種,一種是附加在 cookie 中,一種是附加在 URL 參數中

  • 服務器在收到請求後,根據標識找到對應的 session 信息識別用戶身份

cookie 數據存放在瀏覽器上,session 數據存放在服務器上,所以相對而言使用 session 更爲安全

但是,過多的 session 數據保存在服務器上,會影響服務器的性能,所以需要權衡選擇

【 閱讀更多 HTML 系列文章,請看 HTML學習筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章