cookie和本地存儲的區別

cookie

基本概念

  1. cookie非常小,限制在4kb左右,很多瀏覽器都限制一個站點最多保存20個cookie。
  2. 如果沒有設置時間,則表示cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就會消失,這種被稱為會話cookie,它會被保存在內存中。
  3. 當設置了過期時間,瀏覽器會把cookie保存在硬盤中,關閉瀏覽器之后任然有效,直到超過設定的過期時間。

設置和獲取cookie的方法

原生

// 使用js創建cookie
document.cookie="username=John Doe";
// 添加一個過期時間
document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 GMT";
// 使用path 告訴瀏覽器cookie的路徑
document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";


//讀取
var x = document.cookie;
// 修改  舊的值將會被覆蓋
document.cookie="username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";

// 刪除 刪除 cookie 非常簡單。您只需要設置 expires 參數為以前的時間即可
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

封裝

function setCookie(cname,cvalue,exdays)
{
  var d = new Date();
  d.setTime(d.getTime()+(exdays*24*60*60*1000));
  var expires = "expires="+d.toGMTString();
  document.cookie = cname + "=" + cvalue + "; " + expires;
}

function getCookie(cname)
{
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i<ca.length; i++) 
  {
    var c = ca[i].trim();
    if (c.indexOf(name)==0) return c.substring(name.length,c.length);
  }
  return "";
}

localStorage和sessionStorage

優勢

  • 擴展了cookie的4k限制,為了更大的容量存儲而設計的,是在瀏覽器端存儲的數據
  • 減少網絡流量,快速的讀取數據,性能較好,可以作為臨時存儲
  • localStorage是永久性存儲,而sessionStorage屬于當會話結束的時候,就會被清空

劣勢

  • 本質上是對字符串的讀取,內容較多的時候 會消耗內存,導致頁面變卡,
  • 不能被爬蟲抓取到

三者的異同

特性名稱 cookie localStorage sessionStorage
數據的聲明周期 可設置失效時間,默認是關閉瀏覽器后失效 除非被清除,否則永久保存 僅僅在當前會話下有效,關閉頁面或者瀏覽器后會被清除
存放的數據大小 4k左右 一般為5M 一般為5M
與服務端通信 會在http頭中攜帶,如果使用cookie保存過多數據會帶來性能問題 僅在瀏覽器端保存不參與服務器的通信 僅在瀏覽器端保存不參與服務器的通信
易用性 需要自己封裝 有現成的api接口可以使用 有現成的api接口可以使用
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容