大白话本地存储 localStorage 和 sessionStorage 的区别与使用案例

本地存储 localStorage 和 sessionStorage 的区别与使用案例

本地存储 localStoragesessionStorage 的区别与使用案例

什么是本地存储

在网页开发里,有时候我们需要把一些数据存到用户的浏览器里,这样下次用户再打开网页的时候,这些数据还能用。localStoragesessionStorage 就是浏览器提供给我们用来做这件事的两个工具。它们就像是浏览器给我们每个人发的一个小仓库,我们可以把一些东西(数据)存进去。

区别
1. 数据有效期
  • localStorage :它就像是一个长期的大仓库,只要你把东西存进去了,除非你手动把它删掉,或者用户把浏览器的缓存清了,不然这些东西会一直存在。比如说,你在一个购物网站上存了自己喜欢的商品列表到 localStorage 里,那下次不管你啥时候再打开这个网站,这个列表都还在。
  • sessionStorage :它更像是一个临时的小仓库,只在当前的会话期间有效。啥是会话呢?简单说就是你打开一个网页到关闭这个网页的这段时间。一旦你关闭了当前的浏览器窗口或者标签页,存在 sessionStorage 里的东西就会自动消失。比如你在一个在线文档编辑网站上,用 sessionStorage 存了还没保存的文档内容,当你关闭这个标签页后,这些内容就没了。
2. 数据共享范围
  • localStorage :只要是同一个域名下的网页,不管是哪个页面存的数据,其他页面都能访问到。就好比同一个小区的居民都能去小区的公共仓库拿东西一样。比如说,你在 www.example.com/page1.html 这个页面存了数据到 localStorage 里,在 www.example.com/page2.html 这个页面也能把这些数据取出来用。
  • sessionStorage :它的数据只能在同一个窗口(或者标签页)的不同页面之间共享。如果开了一个新的窗口或者标签页,就算是同一个域名的网页,也访问不到之前窗口里 sessionStorage 存的数据。这就像是每个房间都有自己的小柜子,别的房间的人看不到你柜子里的东西。
使用案例
localStorage 的使用案例

场景:记住用户的偏好设置,比如在一个新闻网站上,用户可以选择自己喜欢的新闻分类,下次打开网站的时候还显示这些分类。

代码示例

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>localStorage 示例</title>
</head>

<body>
    <label for="category">选择新闻分类:</label>
    <select id="category">
        <option value="sports">体育</option>
        <option value="tech">科技</option>
        <option value="entertainment">娱乐</option>
    </select>
    <button onclick="savePreference()">保存偏好</button>

    <script>
        // 保存用户的偏好设置到 localStorage
        function savePreference() {
            var category = document.getElementById('category').value;
            // 把选择的分类存到 localStorage 里,键名是 'newsCategory'
            localStorage.setItem('newsCategory', category);
            alert('偏好设置已保存!');
        }

        // 页面加载时检查 localStorage 里是否有保存的偏好设置
        window.onload = function () {
            var savedCategory = localStorage.getItem('newsCategory');
            if (savedCategory) {
                // 如果有保存的偏好设置,就把下拉框的值设置为保存的值
                document.getElementById('category').value = savedCategory;
            }
        };
    </script>
</body>

</html>

在这个例子里,用户选择一个新闻分类后,点击 "保存偏好" 按钮,选择的分类就会被存到 localStorage 里。下次打开这个页面的时候,页面会检查 localStorage 里有没有保存的分类,如果有就把下拉框的值设置成保存的分类。

sessionStorage 的使用案例

场景 :在一个多步骤的表单填写页面中,比如注册表单,每一步填写的数据可以临时存到 sessionStorage 里,方便用户在不同步骤之间切换时不会丢失数据,但是当用户关闭页面后,这些临时数据就会自动清除。

代码示例

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>sessionStorage 示例</title>
</head>

<body>
    <form id="step1">
        <label for="username">用户名:</label>
        <input type="text" id="username">
        <button onclick="saveStep1(); return false;">下一步</button>
    </form>

    <form id="step2" style="display: none;">
        <label for="email">邮箱:</label>
        <input type="email" id="email">
        <button onclick="saveStep2(); return false;">提交</button>
    </form>

    <script>
        // 保存第一步的数据到 sessionStorage
        function saveStep1() {
            var username = document.getElementById('username').value;
            // 把用户名存到 sessionStorage 里,键名是 'username'
            sessionStorage.setItem('username', username);
            // 隐藏第一步表单,显示第二步表单
            document.getElementById('step1').style.display = 'none';
            document.getElementById('step2').style.display = 'block';
        }

        // 保存第二步的数据到 sessionStorage
        function saveStep2() {
            var email = document.getElementById('email').value;
            // 把邮箱存到 sessionStorage 里,键名是 'email'
            sessionStorage.setItem('email', email);
            // 这里可以做提交表单的操作,比如发送到服务器
            alert('注册信息已提交!用户名:' + sessionStorage.getItem('username') + ',邮箱:' + email);
        }
    </script>
</body>

</html>

在这个例子里,用户在第一步填写用户名后,点击 "下一步" 按钮,用户名就会被存到 sessionStorage 里。然后页面切换到第二步,用户填写邮箱后点击 "提交" 按钮,邮箱也会被存到 sessionStorage 里。这样在整个注册流程中,数据不会丢失。但如果用户关闭了这个页面,存在 sessionStorage 里的用户名和邮箱就会自动清除。

localStorage和sessionStorage的存储容量分别是多少?

简单来说,localStorage和sessionStorage能存多少东西,没有一个特别死的规定,不同的浏览器不太一样哦。

一般来讲呢,localStorage就像你家里一个中等大小的储物箱,通常能放5MB到10MB的数据。打个比方,要是把数据想象成文件的话,大概能放好多页文字文档或者一些小图片之类的。像我们常用的Chrome浏览器,它的localStorage一般就是5MB的容量,不过有时候根据你用的设备不一样,或者你自己在浏览器里设置了一些特殊的东西,这个容量也可能会变。还有Firefox浏览器,它的localStorage容量通常也差不多是5MB。

sessionStorage呢,就好比是一个和localStorage差不多大的临时小箱子,它的容量一般也是5MB到10MB。比如说Safari浏览器,它的sessionStorage容量和localStorage差不多,大概也是5MB左右。

但你要知道哦,这些数字不是永远都不变的。浏览器的开发者们可能会根据技术的发展,或者是为了让用户用得更舒服,就去调整这些容量大小。而且呢,我们自己也可以在浏览器的设置里面,对这些存储容量做一些个性化的设置,让它更符合我们自己的需求。

相关推荐
crazyme_65 分钟前
前端自学入门:HTML 基础详解与学习路线指引
前端·学习·html
撸猫79113 分钟前
HttpSession 的运行原理
前端·后端·cookie·httpsession
亦世凡华、32 分钟前
Rollup入门与进阶:为现代Web应用构建超小的打包文件
前端·经验分享·rollup·配置项目·前端分享
Bl_a_ck1 小时前
【React】Craco 简介
开发语言·前端·react.js·typescript·前端框架
为美好的生活献上中指1 小时前
java每日精进 5.11【WebSocket】
java·javascript·css·网络·sql·websocket·网络协议
augenstern4162 小时前
webpack重构优化
前端·webpack·重构
海拥✘2 小时前
CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)
前端·游戏·html
寧笙(Lycode)2 小时前
React系列——HOC高阶组件的封装与使用
前端·react.js·前端框架
asqq83 小时前
CSS 中的 ::before 和 ::after 伪元素
前端·css
拖孩3 小时前
【Nova UI】十五、打造组件库之滚动条组件(上):滚动条组件的起步与进阶
前端·javascript·css·vue.js·ui组件库