HTML5 Web 存储详解

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 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>
相关文章
|
1月前
|
存储 移动开发 大数据
HTML5 Web IndexedDB 数据库详解
IndexedDB 是一种高效的浏览器存储方案,允许在本地存储大量结构化数据,支持索引和事务,适用于需要离线和大数据处理的应用。它由数据库、对象仓库等组成,通过键值对存储数据,确保数据一致性和完整性。本介绍展示了如何创建、读取、更新和删除数据,以及事务和错误处理的最佳实践。
|
28天前
|
存储 缓存 前端开发
Web应用中的存储方式有哪些?
本文首发于微信公众号“前端徐徐”,介绍了几种常见的前端数据存储技术:Cookie、Web Storage(包括 localStorage 和 sessionStorage)、IndexedDB、Cache Storage 和 Memory Storage。每种技术的特点和使用场景不同,适用于不同的开发需求。文章详细解释了它们的使用方法、特点和应用场景,并提供了代码示例。
78 2
Web应用中的存储方式有哪些?
|
1月前
|
存储 移动开发 数据库
HTML5 Web IndexedDB 数据库常用数据存储类型
IndexedDB 支持多种数据存储类型,满足复杂数据结构的存储需求。它包括基本数据类型(如 Number、String、Boolean、Date)、对象(简单和嵌套对象)、数组、Blob(用于二进制数据如图像和视频)、ArrayBuffer 和 Typed Arrays(处理二进制数据)、结构化克隆(支持 Map 和 Set 等复杂对象),以及 JSON 数据。尽管不直接支持非序列化数据(如函数和 DOM 节点),但可以通过转换实现存储。开发者应根据具体需求选择合适的数据类型,以优化性能和使用体验。
|
1月前
|
移动开发 JavaScript 前端开发
HTML5 Web Workers详解
HTML5 Web Workers 允许在后台线程中运行 JavaScript,实现复杂计算而不影响用户界面,提升应用性能。其主要特性包括并行处理、异步通信、独立作用域及多数据类型支持。通过创建和使用 Worker 文件,如 `worker.js`,可执行后台任务,并与主线程通过消息传递机制通信。适用于数据处理、图像处理、复杂计算及网络请求并行等场景。需要注意的是,Web Workers 在浏览器兼容性、安全性限制、调试及资源消耗方面需特别关注。合理利用 Web Workers 可显著增强 Web 应用的流畅度和响应速度。
|
1月前
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
23天前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
74 0
|
24天前
|
移动开发 前端开发 JavaScript
HTML与现代Web开发的不同技术
【10月更文挑战第11天】HTML与现代Web开发的不同技术
18 0
|
26天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
86 3
|
8天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
84 44
|
4天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
13 1
下一篇
无影云桌面