javascript中sessionStorage的存儲(chǔ)機(jī)制的使用小結(jié)
1. sessionStorage 的特點(diǎn)
作用域:
sessionStorage
的作用域限定在當(dāng)前頁(yè)面會(huì)話中。不同標(biāo)簽頁(yè)或窗口之間的
sessionStorage
是隔離的,即使它們打開(kāi)的是同一個(gè)頁(yè)面。
生命周期:
數(shù)據(jù)在頁(yè)面會(huì)話期間有效。
當(dāng)頁(yè)面會(huì)話結(jié)束(關(guān)閉標(biāo)簽頁(yè)或窗口)時(shí),數(shù)據(jù)會(huì)被清除。
存儲(chǔ)容量:
通常每個(gè)源的
sessionStorage
容量限制為 5MB(不同瀏覽器可能略有不同)。
數(shù)據(jù)類(lèi)型:
只能存儲(chǔ)字符串類(lèi)型的數(shù)據(jù)。如果需要存儲(chǔ)對(duì)象或其他數(shù)據(jù)類(lèi)型,需要先將其轉(zhuǎn)換為字符串(如使用
JSON.stringify
)。
2. sessionStorage 的存儲(chǔ)機(jī)制
瀏覽器通過(guò)以下方式存儲(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ù)是隔離的,無(wú)法互相訪問(wèn)。
2.2 頁(yè)面會(huì)話的綁定
sessionStorage
與當(dāng)前頁(yè)面會(huì)話綁定。當(dāng)用戶打開(kāi)一個(gè)新標(biāo)簽頁(yè)或窗口時(shí),即使訪問(wèn)的是同一個(gè) URL,也會(huì)創(chuàng)建一個(gè)新的
sessionStorage
實(shí)例。刷新頁(yè)面不會(huì)清除
sessionStorage
數(shù)據(jù)。
2.3 數(shù)據(jù)存儲(chǔ)位置
sessionStorage
的數(shù)據(jù)存儲(chǔ)在瀏覽器的內(nèi)存中。數(shù)據(jù)不會(huì)持久化到磁盤(pán),因此當(dāng)頁(yè)面會(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
中獲取指定鍵對(duì)應(yīng)的值。如果鍵不存在,則返回
null
。
3.3 刪除數(shù)據(jù)
sessionStorage.removeItem('key');
從
sessionStorage
中刪除指定鍵及其對(duì)應(yīng)的值。
3.4 清空數(shù)據(jù)
sessionStorage.clear();
清空
sessionStorage
中的所有數(shù)據(jù)。
3.5 獲取鍵名
const key = sessionStorage.key(index);
獲取指定索引位置的鍵名。
3.6 獲取長(zhǎng)度
const length = sessionStorage.length;
獲取
sessionStorage
中存儲(chǔ)的鍵值對(duì)數(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); // 輸出: null
4.2 刪除數(shù)據(jù)
// 刪除指定鍵 sessionStorage.removeItem('theme'); // 檢查是否刪除成功 const theme = sessionStorage.getItem('theme'); console.log(theme); // 輸出: null
4.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'); // 遍歷所有鍵值對(duì) 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: value2
5. sessionStorage 的注意事項(xiàng)
數(shù)據(jù)丟失:
當(dāng)頁(yè)面會(huì)話結(jié)束時(shí)(關(guān)閉標(biāo)簽頁(yè)或窗口),
sessionStorage
中的數(shù)據(jù)會(huì)被清除。刷新頁(yè)面不會(huì)清除數(shù)據(jù)。
數(shù)據(jù)類(lèi)型限制:
sessionStorage
只能存儲(chǔ)字符串。如果需要存儲(chǔ)對(duì)象或其他數(shù)據(jù)類(lèi)型,需要先將其轉(zhuǎn)換為字符串(如使用JSON.stringify
)。
容量限制:
每個(gè)源的
sessionStorage
容量通常限制為 5MB。如果超出限制,瀏覽器可能會(huì)拋出錯(cuò)誤。
安全性:
sessionStorage
的數(shù)據(jù)僅在客戶端存儲(chǔ),不會(huì)自動(dòng)發(fā)送到服務(wù)器。不要將敏感信息(如密碼、令牌)存儲(chǔ)在
sessionStorage
中,除非經(jīng)過(guò)加密處理。
6. sessionStorage 與 localStorage 的區(qū)別
特性 | sessionStorage | localStorage |
---|---|---|
生命周期 | 頁(yè)面會(huì)話結(jié)束時(shí)清除 | 永久存儲(chǔ),除非手動(dòng)清除 |
作用域 | 當(dāng)前頁(yè)面會(huì)話 | 同一源下的所有頁(yè)面 |
數(shù)據(jù)共享 | 不同標(biāo)簽頁(yè)或窗口之間隔離 | 同一源下的所有頁(yè)面共享 |
容量限制 | 通常 5MB | 通常 5MB |
適用場(chǎng)景 | 臨時(shí)存儲(chǔ)頁(yè)面會(huì)話期間的數(shù)據(jù) | 長(zhǎng)期存儲(chǔ)用戶偏好設(shè)置或其他持久化數(shù)據(jù) |
總結(jié)
sessionStorage
是一種基于頁(yè)面會(huì)話的客戶端存儲(chǔ)機(jī)制,數(shù)據(jù)在頁(yè)面會(huì)話期間有效。它的作用域限定在當(dāng)前頁(yè)面會(huì)話中,不同標(biāo)簽頁(yè)或窗口之間的數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- javascript中本地存儲(chǔ)localStorage,sessionStorage,cookie,indexDB的用法與使用場(chǎng)景匯總
- js前端存儲(chǔ)之sessionStorage使用方法舉例
- JavaScript本地?cái)?shù)據(jù)存儲(chǔ)sessionStorage與localStorage使用詳解
- JavaScript中本地存儲(chǔ)(LocalStorage)和會(huì)話存儲(chǔ)(SessionStorage)的使用
- JS localStorage存儲(chǔ)對(duì)象,sessionStorage存儲(chǔ)數(shù)組對(duì)象操作示例
相關(guān)文章
微信小程序?qū)崿F(xiàn)轉(zhuǎn)盤(pán)抽獎(jiǎng)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)轉(zhuǎn)盤(pán)抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09JavaScrip實(shí)現(xiàn)一個(gè)有時(shí)間限制的緩存類(lèi)的方式
本文將探索 JavaScript 中一種基于自動(dòng)過(guò)期機(jī)制的時(shí)間限制緩存實(shí)現(xiàn)方式,提高數(shù)據(jù)緩存策略的靈活性和效率,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01在SSM框架下用laypage和ajax實(shí)現(xiàn)分頁(yè)和數(shù)據(jù)交互的方法
今天小編大家分享一篇在SSM框架下用laypage和ajax實(shí)現(xiàn)分頁(yè)和數(shù)據(jù)交互的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09JavaScript實(shí)現(xiàn)MIPS乘法模擬的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)MIPS乘法模擬的方法,實(shí)例分析了JavaScript實(shí)現(xiàn)MIPS乘法模擬的運(yùn)算技巧,需要的朋友可以參考下2015-04-04記錄微信小程序 height: calc(xx - xx);無(wú)效問(wèn)題
這篇文章主要介紹了微信小程序 - height: calc(xx - xx);無(wú)效 問(wèn)題,文中給大家擴(kuò)展介紹下jquery點(diǎn)擊添加樣式,再次點(diǎn)擊移除樣式的實(shí)例代碼,需要的朋友可以參考下2019-12-12uniapp自定義應(yīng)用退出執(zhí)行內(nèi)容實(shí)例代碼
近幾日使用uni-app開(kāi)發(fā)移動(dòng)應(yīng)用APP遇到了個(gè)不常見(jiàn)的需求,下面這篇文章主要給大家介紹了關(guān)于uniapp自定義應(yīng)用退出執(zhí)行內(nèi)容的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12JavaScript比較當(dāng)前時(shí)間是否在指定時(shí)間段內(nèi)的方法
這篇文章主要介紹了JavaScript比較當(dāng)前時(shí)間是否在指定時(shí)間段內(nèi)的方法,涉及javascript時(shí)間與字符串的轉(zhuǎn)換及比較操作相關(guān)技巧,需要的朋友可以參考下2016-08-08JavaScript對(duì)象引用與賦值實(shí)例詳解
這篇文章主要介紹了JavaScript對(duì)象引用與賦值,結(jié)合實(shí)例形式分析了JavaScript對(duì)象引用及賦值的操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-03-03如何讓easyui gridview 寬度自適應(yīng)窗口改變及fitColumns應(yīng)用
在使用Easyui GridView時(shí),如果要Gridview的寬度和窗口的寬度相同,只需要設(shè)置fitColumns: true即可,感興趣的你不要走開(kāi)啊,接下來(lái)為您詳細(xì)介紹2013-01-01JavaScript undefined及null區(qū)別實(shí)例解析
這篇文章主要介紹了JavaScript undefined及null區(qū)別實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07