JavaScript进阶 - 浏览器存储:localStorage, sessionStorage, cookies

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【7月更文挑战第8天】Web开发中的客户端存储技术,如`localStorage`, `sessionStorage`和`cookies`,用于保存用户设置和跟踪活动。`localStorage`持久化存储,`sessionStorage`随页面会话消失。两者提供基本的增删查改操作,但有大小限制和安全风险。`cookies`适合会话管理,可设置过期时间并能跨域。使用时注意存储量、安全性和跨域策略,选择适合场景的存储方式。

在Web开发中,客户端存储技术对于保存用户偏好设置、缓存数据和跟踪用户活动至关重要。本篇博客将深入探讨三种主要的浏览器存储方式:localStorage, sessionStorage, 和 cookies,并讨论它们的常见问题、易错点以及如何避免这些问题。
image.png

localStorage 和 sessionStorage

localStoragesessionStorage 是HTML5引入的Web Storage API的一部分,它们提供了在用户浏览器上持久化存储数据的能力,而无需依赖服务器端。

特点与区别
  • localStorage:数据永久存储,除非用户清除浏览器数据或开发者手动删除。
  • sessionStorage:数据在页面会话结束时清除,即当浏览器窗口或标签页关闭时。
基本操作
// 设置数据
localStorage.setItem('key', 'value');
sessionStorage.setItem('key', 'value');

// 获取数据
let value = localStorage.getItem('key');
let sessionValue = sessionStorage.getItem('key');

// 删除数据
localStorage.removeItem('key');
sessionStorage.removeItem('key');

// 清空所有数据
localStorage.clear();
sessionStorage.clear();
常见问题与避免策略
  1. 数据大小限制:虽然现代浏览器通常支持5MB以上的存储空间,但这不是标准,且某些情况下可能更小。确保监控存储大小,避免超出限制。
  2. 安全性:存储敏感信息时要小心,因为这些数据容易被恶意脚本读取。不要存储密码或其他敏感信息。
  3. 跨域访问localStoragesessionStorage 受同源策略限制,不能跨域访问。

Cookies

Cookies是另一种存储机制,主要用于跟踪用户会话和偏好设置。它们可以设置过期时间,可以被发送到服务器端。

基本操作
// 设置cookie
document.cookie = "name=value; expires=date; path=path; domain=domain; secure";

// 获取cookie
function getCookie(name) {
   
   
    let cookieArr = document.cookie.split(";");
    for(let i = 0; i < cookieArr.length; i++) {
   
   
        let cookiePair = cookieArr[i].split("=");
        if(name == cookiePair[0].trim()) {
   
   
            return decodeURIComponent(cookiePair[1]);
        }
    }
    return null;
}
常见问题与避免策略
  1. 大小限制:每个域名下的cookies总大小通常限制在4KB左右。过多的cookies可能导致性能问题。
  2. 安全性:使用secure属性确保只有HTTPS连接下才能传输cookies,防止中间人攻击。
  3. 跨子域共享:通过设置domain属性,可以使cookies在主域及其子域之间共享。

总结与选择建议

  • 对于需要长期存储的非敏感数据,优先考虑使用localStorage
  • 对于与用户会话相关的数据,使用sessionStorage
  • Cookies适用于需要在客户端和服务器间交换的小量数据,尤其是认证和会话管理。

在使用任何存储机制时,都应考虑到数据的安全性和隐私保护,避免存储过于敏感的信息,并定期审查存储策略,确保它们符合最新的安全标准和最佳实践。通过合理利用这些存储方式,可以显著提升Web应用的功能性和用户体验。

目录
相关文章
|
13天前
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
在浏览器执行js脚本的两种方式
|
11天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
17天前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
125 9
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
422 1
|
30天前
|
存储 JSON JavaScript
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
46 0
|
30天前
|
JavaScript API
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
深入解析JS中的visibilitychange事件:监听浏览器标签间切换的利器
91 0
|
1月前
|
JavaScript 前端开发 开发者
JavaScript 浏览器控制台的使用
JavaScript 浏览器控制台的使用
19 0
|
1月前
|
存储 JavaScript 前端开发
JavaScript 与浏览器存储
JavaScript 与浏览器存储
33 0
|
1月前
|
缓存 前端开发 算法
浅谈【JavaScript】的浏览器指纹?
浅谈【JavaScript】的浏览器指纹?
18 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
96 2