JavaScript Storage管理技巧:如何利用浏览器本地存储?

JavaScript中,我们可以使用浏览器的本地存储来保存数据。这对于提升用户体验和服务端性能有非常大的作用。本文将探讨JavaScript中的本地存储技巧。

一、localStorage和sessionStorage

在浏览器端,localStorage 和 sessionStorage 是两个非常常用的本地存储方式。它们都可以独立存储至少5MB的数据,并支持增删改查操作。

//localStorage的使用方法
localStorage.setItem('name', 'John');
console.log(localStorage.getItem('name')); //John
localStorage.removeItem('name');

//sessionStorage的使用方法
sessionStorage.setItem('name', 'John');
console.log(sessionStorage.getItem('name')); //John
sessionStorage.removeItem('name');

这里需要注意的是,localStorage与sessionStorage之间的区别在于后者的存储内容仅限于用户会话(session)期间,当用户关闭浏览器窗口后,存储的数据将被清除。

二、cookie

除了localStorage和sessionStorage,JavaScript还有一种常用的本地存储方式是cookie。cookie是一小段文本信息,存储在浏览器端,以便下次访问时读取信息。cookie具有以下特点:

  • 每个cookie的最大大小约为4kb。
  • 每个域名下最多可以存储20个cookie。
  • cookie可以设置过期时间。
  • cookie可以被JS直接读取。
//设置cookie
document.cookie = "username=John; expires=Tue, 19 Jan 2038 03:14:07 UTC; path=/"

//读取cookie
function getCookie(cname) {
  const name = cname + "=";
  const ca = document.cookie.split(';');
  for(let i = 0; i < ca.length; i++) {
    let c = ca[i];
    while(c.charAt(0) === ' ') {
      c = c.substring(1);
    }
    if(c.indexOf(name) === 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

//删除cookie
function deleteCookie(cname) {
  document.cookie = `${cname}=''; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`
}

三、IndexDB

如果需要存储更多数据,我们可以使用IndexDB。IndexDB是一种以对象存储为基础的高级本地存储技术,可以存储大量结构化数据,支持离线访问。

//打开数据库
const request = window.indexedDB.open('myDB', 1)
let db
request.onerror = function(event) {
  console.error('Database error: ' + event.target.errorCode);
};
request.onsuccess = function(event) {
  db = event.target.result;
};

//创建对象仓库
const objectStore = db.createObjectStore('users', { keyPath: 'id' });

//添加数据
const tx = db.transaction(['users'], 'readwrite');
const store = tx.objectStore('users');
const user1 = { id: 1, name: 'John', age: 28 };
store.add(user1);

//查询数据
const tx = db.transaction(['users'], 'readonly');
const store = tx.objectStore('users');
const request = store.get(1);
request.onsuccess = function() {
  console.log(request.result);
};

//更新数据
const tx = db.transaction(['users'], 'readwrite');
const store = tx.objectStore('users');
const request = store.get(1);
request.onsuccess = function() {
  const data = request.result;
  data.age++;
  store.put(data);
};

//删除数据
const tx = db.transaction(['users'], 'readwrite');
const store = tx.objectStore('users');
store.delete(1);

四、总结

本文介绍了JavaScript在本地存储方面的几种方式:localStorage和sessionStorage,cookie和IndexDB。每种本地存储技术都有其适用的场景,需要视具体情况而定。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/192230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-01 09:56
下一篇 2024-12-01 09:56

相关推荐

  • 使用vscode建立UML图的实践和技巧

    本文将重点介绍在使用vscode在软件开发中如何建立UML图,并且给出操作交互和技巧的指导。 一、概述 在软件开发中,UML图是必不可少的重要工具之一。它为软件架构和各种设计模式的…

    编程 2025-04-29
  • 如何解决web浏览器双击事件时差

    本文将从以下几个方面对web浏览器双击事件时差进行详细阐述,并提供解决方法。 一、双击事件延时设置 1、问题描述:在web浏览器中,双击事件默认会延时一定的时间才能触发该事件,这个…

    编程 2025-04-29
  • 优秀周记1000字的撰写思路与技巧

    优秀周记是每个编程开发工程师记录自己工作生活的最佳方式之一。本篇文章将从周记的重要性、撰写思路、撰写技巧以及周记的示例代码等角度进行阐述。 一、周记的重要性 作为一名编程开发工程师…

    编程 2025-04-28
  • 使用Python模拟手机浏览器的方法

    解答如何使用Python模拟手机浏览器,并且给出示例代码。 一、安装Selenium库 使用Python模拟手机浏览器需要使用Selenium库。 首先,使用pip命令进行安装: …

    编程 2025-04-28
  • 谷歌浏览器窗口大小调整

    谷歌浏览器是当今最流行的网络浏览器之一,它的窗口大小调整是用户操作其中的一个重要部分。本文将从多个方面对谷歌浏览器窗口大小调整做详细的阐述。 一、窗口大小调整的基础操作 谷歌浏览器…

    编程 2025-04-28
  • 如何在电脑上下载安装谷歌浏览器?

    想要在电脑上使用谷歌浏览器,我们需要先进行下载和安装。下面,本文将从多个方面详细阐述如何在电脑上下载安装谷歌浏览器。 一、到谷歌浏览器官方网站下载 谷歌浏览器官方网站是我们下载谷歌…

    编程 2025-04-28
  • 使用JavaScript日期函数掌握时间

    在本文中,我们将深入探讨JavaScript日期函数,并且从多个视角介绍其应用方法和重要性。 一、日期的基本表示与获取 在JavaScript中,使用Date对象来表示日期和时间,…

    编程 2025-04-28
  • JavaScript中使用new Date转换为YYYYMMDD格式

    在JavaScript中,我们通常会使用Date对象来表示日期和时间。当我们需要在网站上显示日期时,很多情况下需要将Date对象转换成YYYYMMDD格式的字符串。下面我们来详细了…

    编程 2025-04-27
  • 堆叠图配色技巧分享

    堆叠图是数据可视化中常用的一种表现形式,而配色则是影响堆叠图观感和传达信息的重要因素之一。本文将分享一些堆叠图配色的技巧,帮助你创造更好的数据可视化。 一、色彩搭配原则 色彩是我们…

    编程 2025-04-27
  • 使用uring_cmd提高开发效率的技巧

    对于编程开发工程师来说,提高效率一直是致力追求的目标。本文将深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一个非常强大的命令行工具,但是大部…

    编程 2025-04-27

发表回复

登录后才能评论