cookie
介紹:早期設計用于服務端存儲少量數據的,任何以cookie形式存儲的數據,不論服務器端是否需要,每一次HTTP請求都會把這些數據傳輸到服務器。
用處:用于保存狀態以及能夠為瀏覽器提供身份識別機制。注意,js中不會對cookie采用任何加密機制(只有通過https協議來傳輸cookie則是安全的)。
有效期:默認瀏覽器關閉后刪除cookie,可通過設置max-age
(單位是秒)來設置cookie的有限期。
作用域:默認對創建cookie的頁面以及和該頁面同目錄或者子目錄下的其他網頁可見。修改作用域參考cookie的path
和domain
屬性。
局限性:每個cookie保存的數據(名字和值的總量)不能超過4KB,瀏覽器保存的cookie不能超過300個,服務器保存的cookie不能超過20個。
存儲方法封裝:
function setCookie(c_name,value,expiredays){
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
function getCookie(c_name){
if (document.cookie.length>0){
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1){
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
sessionStorage和localStorage
介紹:兩者都代表同一個Storage對象,它們的區別僅僅在于存儲的有限期和作用域的不同,即數據可以存儲多少時間以及誰擁有數據的訪問權。
區別:localStorage存儲的數據是永久性的,永不過期;sessionStorage存儲的數據僅限于當前標簽頁或最頂層的窗口,一旦標簽頁或窗口被關閉,數據隨即被刪除。
作用域:localStorage和localStorage的作用域都是限定在文檔源級別的。(文檔源 = 協議 + 主機名 + 端口)只有同源文檔才可以共享數據。另外,同源前提下的不同標簽頁中的sesstionStorage無法共享。
兼容性:iOS safari 隱藏下localStorage.getItem會報錯,建議統一使用try-catch封裝。
存儲API:
localStorage.setItem('x', 1); // 存儲某項的值
localStorage.getItem('x'); // 獲取某項的值
localStorage.removeItem('x'); // 刪除具體項
localStorage.clear(); // 全部清楚