工作中常用到的cookie和localStore存儲方法
// Cookie 存儲 CookieStore = { get: function (name) { var cookieName = encodeURIComponent(name) + "=", cookieStart = document.cookie.indexOf(cookieName), cookieValue = null; if (cookieStart > -1) { var cookieEnd = document.cookie.indexOf(";", cookieStart) if (cookieEnd == -1) { cookieEnd = document.cookie.length; } cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd)); } return cookieValue; }, set: function (name, value, expires, path, domain, secure) { var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value); if (expires instanceof Date) { cookieText += "; expires=" + expires.toGMTString(); } if (path) { cookieText += "; path=" + path; } if (domain) { cookieText += "; domain=" + domain; } if (secure) { cookieText += "; secure"; } document.cookie = cookieText; }, unset: function (name, path, domain, secure) { this.set(name, "", new Date(0), path, domain, secure); } } // 本地存儲 LocalStore = { set: function (n, val) { if (window.localStorage && localStorage.setItem) { try { // safari 隱私瀏覽器會報錯 localStorage.setItem(n, val); } catch (e) { Utils.cookieStore.set(n, val); } } else { Utils.cookieStore.set(n, val); } return this; }, get: function (n) { if (window.localStorage && localStorage.getItem) { try { return localStorage.getItem(n); } catch (e) { return Utils.cookieStore.get(n); } } else { return Utils.cookieStore.get(n); } }, remove: function (n) { if (window.localStorage && localStorage.removeItem) { try { localStorage.removeItem(n); } catch (e) { Utils.cookieStore.unset(n); } } else { Utils.cookieStore.unset(n); } return this; } }
cookie存儲和localStorage 存儲有什么區別呢?
1. cookie在瀏覽器和服務器間來回傳遞,localStorage 僅在本地保存。
2. cookie數據和loaclstore存儲大小限制也不同,cookie數據不能超過4k,而localStorage 可以達到5M或更大。
3. 數據有效期不同,localStorage:始終有效,窗口或瀏覽器關閉也一直保存,因此用作持久數據;cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。
4. 作用域不同,localStorage 在所有同源窗口中都是共享的,cookie也是在所有同源窗口中都是共享的。