網頁瀏覽器中可以使用的 storage:localStorage 跟 sessionStorage 是什麼?兩者差異為何

更新於 2024/05/23閱讀時間約 4 分鐘

在先前的文章中,我們聊過瀏覽器中的另外一個儲存空間:cookie,有興趣的讀者可以從這邊複習。

與 cookie 相比,localStorage 與 sessionStorage 的機制相對單純,兩者皆是瀏覽器中的儲存空間,與 cookie 最大的不同在於:localStorage 與 sessionStorage 只存活在瀏覽器,並不會直接挾帶在 HTTP Request Header 上,且這兩者的容量比 cookie 大上不少(cookie 為 4KB,localStorage 與 sessionStorage 為 5MB)。

接著就來看看這兩者的簡介與使用方式:

localStorage 是什麼?會在什麼場合派上用場?

localStorage 的運作機制很單純,主要是以鍵值對(key value pairs)的方式運作,並且在存入當下的網域生效,要注意的是 localStorage 存入的值只能是字串,舉例來說:

// 設置資料
localStorage.setItem('username', 'john_doe');

// 獲取資料
const username = localStorage.getItem('username');
console.log(username); // 輸出: john_doe

如果要存入物件的話必須要轉成字串才行:

// 假設有一個 JavaScript 物件
const user = {
id: 1,
username: 'john_doe',
email: 'john@example.com',
};

// 使用 JSON.stringify 將物件轉換為 JSON 字串
const userString = JSON.stringify(user);

// 將 JSON 字串存儲在 localStorage 中
localStorage.setItem('user', userString);

// 從 localStorage 中獲取 JSON 字串
const storedUserString = localStorage.getItem('user');

// 使用 JSON.parse 將 JSON 字串轉換為 JavaScript 物件
const storedUser = JSON.parse(storedUserString);

// 此時 storedUser 將是一個包含原始物件的 JavaScript 物件
console.log(storedUser);

localStorage 並不像 cookie 一樣有許多複雜的屬性,也沒有所謂的逾期機制,除非使用者手動清了瀏覽器快取,才會使舊的 localStorage 被清掉,可說是永久性的瀏覽器儲存空間。

由於存取上只停留在瀏覽器,在資安風險上比較不容易偽造身分,但還是會有資料外洩的風險。

一般來說, localStorage 不會拿來儲存重要的資訊,如果需要進行會員資訊的識別,也會透過加密的方式、不以明碼進行儲存。

在一些需要暫存網頁服務狀態的情境中 localStorage 非常好用,例如:使用者常使用的功能快取狀態、使用者偏好的文字大小等、燈箱效果,都可以透過 localStorage 做到關掉瀏覽器後狀態依然能存續。

SessionStorage 與 LocalStorage 的差異

sessionStorage 可以看做為 localStorage 的逾期版,只要在設定後被關掉瀏覽器則會馬上失效。

sessionStorage 的逾期特性使得一次性的憑證紀錄變得更方便與安全,在少數 CMS、活動性的頁面,如果有會員機制需要被快速逾期、不想要被永久紀錄狀態,那 sessionStorage 會是比 localStorage 更好的選擇。

小結

localStorage 與 sessionStorage 是被看作比 cookie 更安全的瀏覽器端暫存機制,根據 Mozilla 這兩者也被稱為 Modern Storage API,使用上方便也彈性,應盡量避免 cookie 的使用。

以上就是瀏覽器常用的儲存空間介紹啦,如果有任何問題小跟我討論,歡迎下方留言告訴我,我是 Vivian,我們下次見!

為了追求可以窩在座位上、可以心無旁騖思考問題、座位可以亂七八糟沒關係、不需要到處哈腰點頭跑客戶,不用腳踩十公分、連妝都可以不用化的職場人生,文組少女毅然決然踏上RD的養成日常。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
在瀏覽器環境中有許多的儲存空間,想要查看這些空間的話,可以透過「chrome > Dev Tools > Application > Storage」即能進行查看。 瀏覽器內存空間的差異不僅常常被拿來被當作面試考題,在實務開發中更扮演舉足輕重的角色,今天就想透過這系列的文章深度了解這些瀏覽器內存⋯
Vite 是由 Vue 開發者 Evan You 所開發出來,用來加快、優化程式碼打包的工具,在這裡我們不免會需要提到大部分前端開發者可能都會聽過、使用過的前端工具:Webpack。 在那之前,我們先來聊聊為什麼前端會需要所謂的打包工具呢?
Storybook 是一個用來透過獨立元件快速開發 UI 介面的工具,以往要開發元件時,我們可能需要建立一個全新的頁面才能進行開發,但這樣的開發方式可能會有一個狀況:沒有辦法事先開發或是預覽流程中不存在的元件。 透過 Storybook 我們在開發元件時,不需要重新建立複雜的頁面結構⋯⋯
在 2021 年的剛轉職成為前端工程師的時候,我在面試時滿常會被詢問到 JavaScript 中閉包的議題,當時候自己回答的滿差的,於是在 2022 年時,我寫了一系列的有關於函式程式設計鐵人賽的文章, 裡頭就有簡單提到有關於閉包的議題。
在之前的文章當中曾經提到過 JavaScript 中的物件有一個特別的機制:傳參考(Called by reference),如果正確性再高一點的話,則可以稱之為傳共享(Called by sharing)。
在先前的型別文章中,我們曾經聊過 JavaScript 常用的一些型別,但針對布林這個型別,我們沒有做太多的解釋,原因在於布林值在 JavaScript 會有一個特殊的規則:自動轉型 。 自動轉型可說是讓 JavaScript 為弱型別、且難以管理的最重要的要素,接著就來讓我們來聊聊什麼是自動轉型
在瀏覽器環境中有許多的儲存空間,想要查看這些空間的話,可以透過「chrome > Dev Tools > Application > Storage」即能進行查看。 瀏覽器內存空間的差異不僅常常被拿來被當作面試考題,在實務開發中更扮演舉足輕重的角色,今天就想透過這系列的文章深度了解這些瀏覽器內存⋯
Vite 是由 Vue 開發者 Evan You 所開發出來,用來加快、優化程式碼打包的工具,在這裡我們不免會需要提到大部分前端開發者可能都會聽過、使用過的前端工具:Webpack。 在那之前,我們先來聊聊為什麼前端會需要所謂的打包工具呢?
Storybook 是一個用來透過獨立元件快速開發 UI 介面的工具,以往要開發元件時,我們可能需要建立一個全新的頁面才能進行開發,但這樣的開發方式可能會有一個狀況:沒有辦法事先開發或是預覽流程中不存在的元件。 透過 Storybook 我們在開發元件時,不需要重新建立複雜的頁面結構⋯⋯
在 2021 年的剛轉職成為前端工程師的時候,我在面試時滿常會被詢問到 JavaScript 中閉包的議題,當時候自己回答的滿差的,於是在 2022 年時,我寫了一系列的有關於函式程式設計鐵人賽的文章, 裡頭就有簡單提到有關於閉包的議題。
在之前的文章當中曾經提到過 JavaScript 中的物件有一個特別的機制:傳參考(Called by reference),如果正確性再高一點的話,則可以稱之為傳共享(Called by sharing)。
在先前的型別文章中,我們曾經聊過 JavaScript 常用的一些型別,但針對布林這個型別,我們沒有做太多的解釋,原因在於布林值在 JavaScript 會有一個特殊的規則:自動轉型 。 自動轉型可說是讓 JavaScript 為弱型別、且難以管理的最重要的要素,接著就來讓我們來聊聊什麼是自動轉型
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
今天來分享一個好像有點廢的小技巧 把網頁變成可以直接用來打字的文字編輯器
Thumbnail
在網頁設計中,排版是傳達信息和增強用戶體驗的關鍵。一個良好的排版不僅能使網站看起來專業,還能指引用戶高效地獲取信息。以下是網頁設計排版中需要注意的細節。
Thumbnail
在數碼時代,企業的網頁設計扮演著關鍵的角色。它不僅代表著企業在網絡世界的形象,也能提升公司的認受性,塑造良好的第一印象,並在線上建立存在感。此外,網頁也是推廣宣傳的基地,能介紹公司和產品資訊,吸納潛在客戶。
Thumbnail
在建立網站的過程中,網頁設計和網頁開發這兩個術語經常被提及。它們雖然密切相關,但各自涵蓋了網站建設的不同方面,從創造視覺吸引力到實現網站的互動功能。
Thumbnail
留白,常被稱為負空間,是網頁設計中的一個關鍵元素,它不僅能提升美感,還能提高網頁的可讀性和用戶體驗。本文將深入探討如何巧妙地運用留白來創造出既美觀又實用的網頁設計。
Thumbnail
axiom.ai 是一個 Chrome 瀏覽器擴充工具,無論你是專業從事資料分析,還是只是想輕鬆地從網站上擷取所需的資訊,它能讓你不用寫程式也能輕鬆建立瀏覽器的自動化機器人!從定期至網站擷取相關資料,再彙整至 Google Sheets,或結合 ChatGPT 技術加速資料擷取,都可以輕鬆實現!
Thumbnail
今天因為小編的電腦不小心重開機,結果平常慣用的Edge瀏覽器在重開機後「自動」更新成100的版本號! 重新開啟Edge瀏覽器後,會自動顯示一些使用技巧,那就看看有沒有值得一試的功能吧。 (注意:此功能應該在Edge瀏覽器版本號90之後就可以支援了,並非一定要更新到版本號100)
Thumbnail
榴槤味潔廁液使用泰國出產榴槤提煉的香油製成,100%天然成分,絕對安全;榴槤味潔廁液以韓國最新技術研發,能夠做到99.9% 殺菌, 有效清潔廁所的頑固污漬,當中的細微份子能夠停留在物件表面長達12小時,形成防菌塗層避免細菌依附於物件上。
Thumbnail
歌曲辨識的服務在一些品牌的產品發佈會前中後會是個高頻需求。大品牌都很重視在各個環節的曲目選擇,因此如果此時有這樣的協助小工具的話,應該很能節省不少功夫吧?
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
今天來分享一個好像有點廢的小技巧 把網頁變成可以直接用來打字的文字編輯器
Thumbnail
在網頁設計中,排版是傳達信息和增強用戶體驗的關鍵。一個良好的排版不僅能使網站看起來專業,還能指引用戶高效地獲取信息。以下是網頁設計排版中需要注意的細節。
Thumbnail
在數碼時代,企業的網頁設計扮演著關鍵的角色。它不僅代表著企業在網絡世界的形象,也能提升公司的認受性,塑造良好的第一印象,並在線上建立存在感。此外,網頁也是推廣宣傳的基地,能介紹公司和產品資訊,吸納潛在客戶。
Thumbnail
在建立網站的過程中,網頁設計和網頁開發這兩個術語經常被提及。它們雖然密切相關,但各自涵蓋了網站建設的不同方面,從創造視覺吸引力到實現網站的互動功能。
Thumbnail
留白,常被稱為負空間,是網頁設計中的一個關鍵元素,它不僅能提升美感,還能提高網頁的可讀性和用戶體驗。本文將深入探討如何巧妙地運用留白來創造出既美觀又實用的網頁設計。
Thumbnail
axiom.ai 是一個 Chrome 瀏覽器擴充工具,無論你是專業從事資料分析,還是只是想輕鬆地從網站上擷取所需的資訊,它能讓你不用寫程式也能輕鬆建立瀏覽器的自動化機器人!從定期至網站擷取相關資料,再彙整至 Google Sheets,或結合 ChatGPT 技術加速資料擷取,都可以輕鬆實現!
Thumbnail
今天因為小編的電腦不小心重開機,結果平常慣用的Edge瀏覽器在重開機後「自動」更新成100的版本號! 重新開啟Edge瀏覽器後,會自動顯示一些使用技巧,那就看看有沒有值得一試的功能吧。 (注意:此功能應該在Edge瀏覽器版本號90之後就可以支援了,並非一定要更新到版本號100)
Thumbnail
榴槤味潔廁液使用泰國出產榴槤提煉的香油製成,100%天然成分,絕對安全;榴槤味潔廁液以韓國最新技術研發,能夠做到99.9% 殺菌, 有效清潔廁所的頑固污漬,當中的細微份子能夠停留在物件表面長達12小時,形成防菌塗層避免細菌依附於物件上。
Thumbnail
歌曲辨識的服務在一些品牌的產品發佈會前中後會是個高頻需求。大品牌都很重視在各個環節的曲目選擇,因此如果此時有這樣的協助小工具的話,應該很能節省不少功夫吧?