HTML5 Web 存储详解

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: HTML5 Web 存储包括 `localStorage` 和 `sessionStorage`,前者提供持久存储且无过期时间,后者仅在会话期间有效。两者均支持键值对形式存储数据,容量约为 5-10 MB。`localStorage` 适用于用户偏好设置、登录状态保持及离线应用缓存;`sessionStorage` 则用于临时数据如表单输入。数据以字符串形式存储,可通过 `JSON` 方法处理对象。由于数据存储于本地,不适合存放敏感信息。示例代码展示了如何使用按钮将输入框内容保存至 `localStorage` 并进行清除操作。

HTML5 Web 存储主要分为两种:localStoragesessionStorage。这两种存储机制允许 web 应用在用户的浏览器中存储数据,从而提升用户体验。下面是对这两种存储类型的详细介绍:

1. localStorage

  • 定义: localStorage 提供了一种持久存储机制,数据存储在用户的浏览器中,没有过期时间,直到用户手动清除或者通过代码删除。
  • 容量: 通常每个域名可以存储大约 5-10 MB 的数据(不同浏览器之间可能会有所不同)。
  • 用法:
    • 存储数据: localStorage.setItem('key', 'value');
    • 获取数据: let value = localStorage.getItem('key');
    • 删除数据: localStorage.removeItem('key');
    • 清空所有数据: localStorage.clear();

2. sessionStorage

  • 定义: sessionStorage 也提供了一种键值对的存储机制,但是其数据在浏览器会话存活期间有效。一旦用户关闭网页或浏览器,数据将被清除。
  • 容量: 行为与 localStorage 类似,通常也是 5-10 MB 的容量限制。
  • 用法:
    • 存储数据: sessionStorage.setItem('key', 'value');
    • 获取数据: let value = sessionStorage.getItem('key');
    • 删除数据: sessionStorage.removeItem('key');
    • 清空所有数据: sessionStorage.clear();

3. 数据存储的特点

  • 键值对存储: 两者都以键值对的形式存储数据,键是字符串,值可以是字符串(使用 JSON.stringifyJSON.parse 来存储和读取对象)。
  • 不同源同源策略: 数据存储是基于源(协议 + 域名 + 端口)的,意味着同源的不同网页可以访问相同的存储,而不同源的网页不能访问。

4. 适用场景

  • localStorage:

    • 存储用户偏好设置。
    • 保持用户登录状态(在用户选择“记住我”时)。
    • 离线应用的数据缓存。
  • sessionStorage:

    • 存储临时数据,像会话中的表单输入。
    • 处理多标签页的会话数据(每个标签页访问自己的 sessionStorage)。

5. 数据安全性

  • Web 存储是由浏览器提供的,并不适合存储敏感数据,如密码等。同时,数据存储在用户的本地浏览器中,用户可以手动检查和删除数据。

6. 实际示例

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Web 存储示例</title>
</head>
<body>
    <h1>Web 存储示例</h1>
    <input type="text" id="myInput" placeholder="输入一些内容...">
    <button id="saveBtn">保存到 localStorage</button>
    <button id="clearBtn">清空 localStorage</button>
    <script>
        document.getElementById('saveBtn').onclick = function() {
    
            const inputValue = document.getElementById('myInput').value;
            localStorage.setItem('myData', inputValue);
            alert('已保存到 localStorage!');
        };

        document.getElementById('clearBtn').onclick = function() {
    
            localStorage.clear();
            alert('已清空 localStorage!');
        };
    </script>
</body>
</html>
相关文章
|
24天前
|
存储 Java
java的对象详解
在Java中,对象是根据类模板实例化的内存实体,具有唯一标识符、属性及行为。通过`new`关键字实例化对象并用构造方法初始化。变量存储的是对象引用而非对象本身,属性描述对象状态,方法定义其行为。Java利用垃圾回收机制自动处理不再使用的对象内存回收,极大地简化了对象生命周期管理,同时对象具备封装、继承和多态性,促进了代码的重用与模块化设计。这使得Java程序更易于理解、维护和扩展。
|
20天前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
192 88
|
20天前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
185 88
|
21天前
|
C语言
C 运算符详解
在C语言中,运算符被广泛用于执行各类操作,涵盖算术、关系、逻辑、位运算、赋值、自增自减、条件及其他运算。算术运算符如`+`、`-`用于基本数学计算;关系运算符如`==`、`&gt;`则进行比较;逻辑运算符如`&&`用于条件判断;位运算符如`&`、`|`针对整数位操作;赋值运算符如`=`实现变量赋值;自增自减运算符如`++`调整变量值;条件运算符`? :`依条件返回不同值;其他运算符如`sizeof`可获取类型大小。以上运算符结合使用,能够灵活高效地处理各种编程任务。
186 88
|
21天前
|
存储 编译器 C语言
C语言存储类详解
在 C 语言中,存储类定义了变量的生命周期、作用域和可见性。主要包括:`auto`(默认存储类,块级作用域),`register`(建议存储在寄存器中,作用域同 `auto`,不可取地址),`static`(生命周期贯穿整个程序,局部静态变量在函数间保持值,全局静态变量限于本文件),`extern`(声明变量在其他文件中定义,允许跨文件访问)。此外,`typedef` 用于定义新数据类型名称,提升代码可读性。 示例代码展示了不同存储类变量的使用方式,通过两次调用 `function()` 函数,观察静态变量 `b` 的变化。合理选择存储类可以优化程序性能和内存使用。
137 82
|
24天前
|
Java
java的类详解
在 Java 中,类是面向对象编程的核心概念,用于定义具有相似特性和行为的对象模板。以下是类的关键特性:唯一且遵循命名规则的类名;描述对象状态的私有属性;描述对象行为的方法,包括实例方法和静态方法;用于初始化对象的构造方法;通过封装保护内部属性;通过继承扩展其他类的功能;以及通过多态增强代码灵活性。下面是一个简单的 `Person` 类示例,展示了属性、构造方法、getter 和 setter 方法及行为方法的使用。
|
1天前
|
移动开发 JavaScript 前端开发
HTML5 表单属性详解
HTML5引入了多种新的表单属性,使表单创建与验证更加便捷高效。新增的输入类型包括`email`、`url`、`tel`等,常用属性有`placeholder`、`required`等。表单元素如`&lt;form&gt;`可设置提交方法和目标URL,`&lt;button&gt;`及`&lt;input type=&quot;submit&quot;&gt;`用于提交。新元素`&lt;datalist&gt;`和`&lt;output&gt;`提供更多功能。HTML5还提供了内置表单验证机制,增强用户体验。
|
1天前
|
移动开发 开发者 UED
HTML5 语义元素详解
HTML5引入了诸多语义元素
|
2天前
|
移动开发 数据安全/隐私保护 UED
HTML5 表单元素详解
HTML5 引入了新的表单元素和属性,如 `&lt;form&gt;、&lt;input&gt;、&lt;textarea&gt;、&lt;select&gt;` 和 `&lt;button&gt;`,以及 `required、min、max` 等属性,增强了表单的创建与交互。其中,`&lt;input&gt;` 支持多种类型如 `email、url、date` 等,提供了更好的用户体验和数据验证。此外,HTML5 还新增了原生表单验证功能,简化了开发流程并提升了安全性。
|
2天前
|
移动开发 前端开发 JavaScript
HTML5 新的 Input可以有哪些好玩的应用
HTML5的新输入类型为应用带来了多种创新和互动功能,显著提升了用户体验和界面趣味性。例如,颜色选择器可动态改变网站主题色;滑块控制适用于音量或亮度调节;日期和时间输入便于预约系统的设计;互动式表单结合多种输入类型实现高效的数据收集;猜数字游戏增加用户参与度;实时搜索建议优化网站搜索功能;图像预览功能让用户上传图片前预览效果;密码可见性切换按钮提升表单的可用性;结合用户位置的电话号码输入则能提供附近服务信息。这些应用场景不仅使网站更具吸引力,还增强了用户的互动体验。