1. 程式人生 > 其它 >cookie、session和lStorage的區別

cookie、session和lStorage的區別

概念:

  • cookie:HTTP響應頭的一部分,通過name=value的形式儲存,主要用於儲存登入資訊。在設定的cookie過期時間之前一直有效,即使視窗或瀏覽器關閉。 存放資料大小為4K左右 。有個數限制(各瀏覽器不同),一般不能超過20個。
  • webstorage:本地儲存,包括localStorage(本地儲存)和sessionStorage(會話儲存),二者都儲存在客戶端,不與伺服器進行互動通訊,儲存資料大小一般都是:5MB。
  • localStorage:生命週期是永久,這意味著除非使用者清除localStorage資訊,否則這些資訊將永遠存在。應用場景:常用於長期登入或判斷使用者是否已登入。
  • sessionStorage:僅在當前會話下有效,關閉頁面或瀏覽器後被清除。應用場景:敏感賬號一次性登入。

  不同瀏覽器無法共享localStorage或sessionStorage中的資訊。相同瀏覽器的不同頁面間可以共享相同的 localStorage(頁面屬於相同域名和埠),但是不同頁面或標籤頁間無法共享sessionStorage的資訊。這裡需要注意的是,頁面及標籤頁僅指頂級視窗,如果一個標籤頁包含多個iframe標籤且他們屬於同源頁面,那麼他們之間是可以共享sessionStorage的。

WebStorage與cookie區別:

  • 儲存大小:cookie為4KB,而WebStorage是5MB;
  • 生命週期:cookie在設定時間內一直有效,localStorage一直有效,sessionStorage瀏覽器未關閉前有效;
  • 伺服器通訊:cookie HTTP頭中,WebStorage不參與伺服器通訊;
  • 網路流量:WebStorage不會傳送到伺服器,儲存在本地的資料可以直接獲取,也不會像cookie一樣每次請求都會傳送到伺服器,所以減少了客戶端和伺服器端的互動,節省了網路流量;
  • 顯示速度:有的資料儲存在WebStorage上,再加上瀏覽器本身的快取。獲取資料時可以從本地獲取會比從伺服器端獲取快得多,所以速度更快。

瀏覽器本地儲存與伺服器端儲存的區別:

  • 資料既可以在瀏覽器本地儲存,也可以在伺服器端儲存;
  • 瀏覽器可以儲存一些資料,需要的時候直接從本地存取,sessionStorage、localStorage和cookie都是由瀏覽器儲存在本地的資料;
  • 伺服器端也可以儲存所有使用者的所有資料,但需要的時候瀏覽器要向伺服器請求資料;
  • 伺服器端可以儲存使用者的持久資料,如資料庫和雲端儲存將使用者的大量資料儲存在伺服器端 ,伺服器端也可以儲存使用者的臨時會話資料,伺服器端的session機制,如jsp的session物件,資料儲存在伺服器上;
  • 伺服器和瀏覽器之間僅需傳遞session id即可,伺服器根據session id找到對應使用者的session物件,會話資料僅在一段時間內有效,這個時間就是server端設定的session有效期;
  • 伺服器端儲存所有的使用者的資料,開銷較大,而瀏覽器端儲存則把不同使用者需要的資料分別儲存在使用者各自的瀏覽器中,瀏覽器端一般只用來儲存小資料,而非服務可以儲存大資料或小資料伺服器儲存資料安全一些,瀏覽器只適合儲存一般資料。

cookie和session的區別:

  • cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上;
  • cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session;
  • session在一定時間內儲存在伺服器上,當訪問增多,會比較佔用伺服器的效能,考慮到減輕伺服器效能應當使用cookie;
  • 單個cookie儲存的數*據不能超過4K,很多瀏覽器都限制一個站點最多儲存20個cookie;
  • 建議將登入資訊等重要資訊存放為session,其他資訊如果需要保留,可以放在cookie中;
  • session儲存在伺服器,客戶端不知道其中的信心;cookie儲存在客戶端,伺服器能夠知道其中的資訊;
  • session中儲存的是物件,cookie中儲存的是字串;
  • session不能區分路徑,同一個使用者在訪問一個網站期間,所有的session在任何一個地方都可以訪問到,而cookie中如果設定了路徑引數,那麼同一個網站中不同路徑下的cookie互相是訪問不到的。