javascript中sessionStorage的存儲(chǔ)機(jī)制的使用小結(jié)
1. sessionStorage 的特點(diǎn)
作用域:
sessionStorage的作用域限定在當(dāng)前頁面會(huì)話中。不同標(biāo)簽頁或窗口之間的
sessionStorage是隔離的,即使它們打開的是同一個(gè)頁面。
生命周期:
數(shù)據(jù)在頁面會(huì)話期間有效。
當(dāng)頁面會(huì)話結(jié)束(關(guān)閉標(biāo)簽頁或窗口)時(shí),數(shù)據(jù)會(huì)被清除。
存儲(chǔ)容量:
通常每個(gè)源的
sessionStorage容量限制為 5MB(不同瀏覽器可能略有不同)。
數(shù)據(jù)類型:
只能存儲(chǔ)字符串類型的數(shù)據(jù)。如果需要存儲(chǔ)對象或其他數(shù)據(jù)類型,需要先將其轉(zhuǎn)換為字符串(如使用
JSON.stringify)。
2. sessionStorage 的存儲(chǔ)機(jī)制
瀏覽器通過以下方式存儲(chǔ)和管理 sessionStorage 數(shù)據(jù):
2.1 基于源的隔離
sessionStorage是基于 源(Origin) 隔離的。源 由協(xié)議(
http/https)、域名和端口組成。例如:https://example.com和http://example.com是不同的源。https://example.com和https://www.example.com也是不同的源。
不同源之間的
sessionStorage數(shù)據(jù)是隔離的,無法互相訪問。
2.2 頁面會(huì)話的綁定
sessionStorage與當(dāng)前頁面會(huì)話綁定。當(dāng)用戶打開一個(gè)新標(biāo)簽頁或窗口時(shí),即使訪問的是同一個(gè) URL,也會(huì)創(chuàng)建一個(gè)新的
sessionStorage實(shí)例。刷新頁面不會(huì)清除
sessionStorage數(shù)據(jù)。
2.3 數(shù)據(jù)存儲(chǔ)位置
sessionStorage的數(shù)據(jù)存儲(chǔ)在瀏覽器的內(nèi)存中。數(shù)據(jù)不會(huì)持久化到磁盤,因此當(dāng)頁面會(huì)話結(jié)束時(shí),數(shù)據(jù)會(huì)被清除。
3. sessionStorage 的 API
sessionStorage 提供了以下方法用于操作數(shù)據(jù):
3.1 存儲(chǔ)數(shù)據(jù)
sessionStorage.setItem('key', 'value');將數(shù)據(jù)存儲(chǔ)到
sessionStorage中。如果鍵已存在,則會(huì)覆蓋原有的值。
3.2 獲取數(shù)據(jù)
const value = sessionStorage.getItem('key');從
sessionStorage中獲取指定鍵對應(yīng)的值。如果鍵不存在,則返回
null。
3.3 刪除數(shù)據(jù)
sessionStorage.removeItem('key');從
sessionStorage中刪除指定鍵及其對應(yīng)的值。
3.4 清空數(shù)據(jù)
sessionStorage.clear();
清空
sessionStorage中的所有數(shù)據(jù)。
3.5 獲取鍵名
const key = sessionStorage.key(index);
獲取指定索引位置的鍵名。
3.6 獲取長度
const length = sessionStorage.length;
獲取
sessionStorage中存儲(chǔ)的鍵值對數(shù)量。
4. sessionStorage 的使用示例
4.1 存儲(chǔ)和獲取數(shù)據(jù)
// 存儲(chǔ)數(shù)據(jù)
sessionStorage.setItem('username', 'Alice');
sessionStorage.setItem('theme', 'dark');
// 獲取數(shù)據(jù)
const username = sessionStorage.getItem('username');
console.log(username); // 輸出: Alice
// 獲取不存在的鍵
const nonExistent = sessionStorage.getItem('nonExistent');
console.log(nonExistent); // 輸出: null4.2 刪除數(shù)據(jù)
// 刪除指定鍵
sessionStorage.removeItem('theme');
// 檢查是否刪除成功
const theme = sessionStorage.getItem('theme');
console.log(theme); // 輸出: null4.3 清空數(shù)據(jù)
// 清空所有數(shù)據(jù) sessionStorage.clear(); // 檢查是否清空成功 console.log(sessionStorage.length); // 輸出: 0
4.4 遍歷數(shù)據(jù)
// 存儲(chǔ)數(shù)據(jù)
sessionStorage.setItem('key1', 'value1');
sessionStorage.setItem('key2', 'value2');
// 遍歷所有鍵值對
for (let i = 0; i < sessionStorage.length; i++) {
const key = sessionStorage.key(i);
const value = sessionStorage.getItem(key);
console.log(`${key}: ${value}`);
}
// 輸出:
// key1: value1
// key2: value25. sessionStorage 的注意事項(xiàng)
數(shù)據(jù)丟失:
當(dāng)頁面會(huì)話結(jié)束時(shí)(關(guān)閉標(biāo)簽頁或窗口),
sessionStorage中的數(shù)據(jù)會(huì)被清除。刷新頁面不會(huì)清除數(shù)據(jù)。
數(shù)據(jù)類型限制:
sessionStorage只能存儲(chǔ)字符串。如果需要存儲(chǔ)對象或其他數(shù)據(jù)類型,需要先將其轉(zhuǎn)換為字符串(如使用JSON.stringify)。
容量限制:
每個(gè)源的
sessionStorage容量通常限制為 5MB。如果超出限制,瀏覽器可能會(huì)拋出錯(cuò)誤。
安全性:
sessionStorage的數(shù)據(jù)僅在客戶端存儲(chǔ),不會(huì)自動(dòng)發(fā)送到服務(wù)器。不要將敏感信息(如密碼、令牌)存儲(chǔ)在
sessionStorage中,除非經(jīng)過加密處理。
6. sessionStorage 與 localStorage 的區(qū)別
| 特性 | sessionStorage | localStorage |
|---|---|---|
| 生命周期 | 頁面會(huì)話結(jié)束時(shí)清除 | 永久存儲(chǔ),除非手動(dòng)清除 |
| 作用域 | 當(dāng)前頁面會(huì)話 | 同一源下的所有頁面 |
| 數(shù)據(jù)共享 | 不同標(biāo)簽頁或窗口之間隔離 | 同一源下的所有頁面共享 |
| 容量限制 | 通常 5MB | 通常 5MB |
| 適用場景 | 臨時(shí)存儲(chǔ)頁面會(huì)話期間的數(shù)據(jù) | 長期存儲(chǔ)用戶偏好設(shè)置或其他持久化數(shù)據(jù) |
總結(jié)
sessionStorage是一種基于頁面會(huì)話的客戶端存儲(chǔ)機(jī)制,數(shù)據(jù)在頁面會(huì)話期間有效。它的作用域限定在當(dāng)前頁面會(huì)話中,不同標(biāo)簽頁或窗口之間的數(shù)據(jù)是隔離的。
使用
sessionStorage可以方便地存儲(chǔ)臨時(shí)數(shù)據(jù),但需要注意其生命周期和容量限制。與
localStorage相比,sessionStorage更適合存儲(chǔ)臨時(shí)數(shù)據(jù),而localStorage更適合存儲(chǔ)持久化數(shù)據(jù)。
到此這篇關(guān)于javascript中sessionStorage的存儲(chǔ)機(jī)制的使用小結(jié)的文章就介紹到這了,更多相關(guān)javascript sessionStorage存儲(chǔ)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序調(diào)用后臺(tái)service教程詳解
這篇文章主要介紹了微信小程序調(diào)用后臺(tái)service教程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
在光標(biāo)處插入字符串的實(shí)現(xiàn)代碼 兼容IE,Firefox
在光標(biāo)處插入字符串,一般用于網(wǎng)頁編輯器中,這里用的是text,需要的朋友可以參考下。2010-03-03
前端實(shí)現(xiàn)文件下載常見的幾種方法總結(jié)
這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)文件下載常見的幾種方法,需要的朋友可以參考下2025-01-01
javascript 閉包詳解及簡單實(shí)例應(yīng)用
這篇文章主要介紹了javascript 閉包詳解及應(yīng)用的相關(guān)資料,需要的朋友可以參考下2016-12-12

