首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js本地保存数据

在JavaScript中,本地保存数据主要有以下几种方式:

1. Cookie

基础概念

  • Cookie是存储在用户浏览器中的小型数据片段。
  • 可以通过HTTP请求自动发送到服务器。

优势

  • 兼容性好,几乎所有浏览器都支持。
  • 可以设置过期时间。

应用场景

  • 用户身份验证信息(如session ID)。
  • 跟踪用户行为(如购物车内容)。

示例代码

代码语言:txt
复制
// 设置cookie
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// 读取cookie
function getCookie(name) {
    let value = `; ${document.cookie}`;
    const parts = value.split(`; ${name}=`);
    if (parts.length === 2) return parts.pop().split(';').shift();
}

// 删除cookie
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

2. LocalStorage

基础概念

  • LocalStorage是HTML5引入的一种持久化存储机制。
  • 数据存储在浏览器中,不会随HTTP请求发送。

优势

  • 存储容量大(通常为5MB)。
  • 数据持久化,除非手动删除。

应用场景

  • 存储用户偏好设置。
  • 缓存数据以提高页面加载速度。

示例代码

代码语言:txt
复制
// 设置数据
localStorage.setItem('username', 'John Doe');

// 读取数据
const username = localStorage.getItem('username');

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

// 清空所有数据
localStorage.clear();

3. SessionStorage

基础概念

  • SessionStorage与LocalStorage类似,但数据仅在当前会话期间有效。
  • 页面关闭后,数据会被清除。

优势

  • 数据不会在不同标签页或窗口间共享。
  • 适用于临时存储会话相关数据。

应用场景

  • 存储表单数据,防止页面刷新丢失。
  • 存储临时状态信息。

示例代码

代码语言:txt
复制
// 设置数据
sessionStorage.setItem('username', 'John Doe');

// 读取数据
const username = sessionStorage.getItem('username');

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

// 清空所有数据
sessionStorage.clear();

4. IndexedDB

基础概念

  • IndexedDB是一种低级API,用于在浏览器中存储大量结构化数据。
  • 支索引和事务处理。

优势

  • 存储容量大(通常为250MB以上)。
  • 支持复杂查询和事务。

应用场景

  • 离线应用数据存储。
  • 需要复杂查询和事务支持的应用。

示例代码

代码语言:txt
复制
// 打开数据库
const request = indexedDB.open('myDatabase', 1);

request.onupgradeneeded = function(event) {
    const db = event.target.result;
    const objectStore = db.createObjectStore('users', { keyPath: 'id' });
    objectStore.createIndex('username', 'username', { unique: false });
};

request.onsuccess = function(event) {
    const db = event.target.result;
    const transaction = db.transaction(['users'], 'readwrite');
    const objectStore = transaction.objectStore('users');
    const request = objectStore.add({ id: 1, username: 'John Doe' });

    request.onsuccess = function() {
        console.log('User added successfully');
    };
};

常见问题及解决方法

  1. 存储容量限制
    • Cookie容量较小(通常为4KB),LocalStorage和SessionStorage容量较大(通常为5MB),IndexedDB容量更大(通常为250MB以上)。
    • 解决方法:根据需求选择合适的存储方式。
  • 数据安全性
    • Cookie和LocalStorage中的数据可以被JavaScript访问,可能存在安全风险。
    • 解决方法:避免存储敏感信息,使用HttpOnly标志保护Cookie。
  • 跨域问题
    • Cookie受同源策略限制,LocalStorage和SessionStorage也受同源策略限制。
    • 解决方法:确保数据存储和访问在同一域名下。

通过以上几种方式,可以根据具体需求选择合适的本地数据存储方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 保存用户信息到本地存储

    简介:在页面加载时从本地存储中恢复数据,并将已保存的数据显示在对应的输入框中。...定义保存数据函数:saveData函数会从输入框中获取值,并使用localStorage.setItem方法将值保存到本地存储中。...页面加载时恢复数据:使用window.onload事件,在页面加载完成后检查本地存储中是否存在之前保存的数据,如果存在则将数据填充到相应的输入框中。...("input", saveData); weburlInput.addEventListener("input", saveData); // 页面加载时从本地存储中恢复数据 window.onload...当输入内容时,saveData() 函数会被触发,并将输入框的值保存到本地存储中。同时,通过在代码中添加console.log()语句,将保存成功的消息输出到控制台。

    26640

    保存用户信息到本地存储

    简介:在页面加载时从本地存储中恢复数据,并将已保存的数据显示在对应的输入框中。...定义保存数据函数:saveData函数会从输入框中获取值,并使用localStorage.setItem方法将值保存到本地存储中。...页面加载时恢复数据:使用window.onload事件,在页面加载完成后检查本地存储中是否存在之前保存的数据,如果存在则将数据填充到相应的输入框中。...("input", saveData); weburlInput.addEventListener("input", saveData); // 页面加载时从本地存储中恢复数据 window.onload...当输入内容时,saveData() 函数会被触发,并将输入框的值保存到本地存储中。同时,通过在代码中添加console.log()语句,将保存成功的消息输出到控制台。

    10810

    Unity C# File类 本地数据保存和游戏存档

    进行本地数据存档和载入在游戏开发中非常常见,几乎任何一款游戏都需要这样的功能。 命名空间: using System.IO; 主要用于引入File类以处理各类文件操作。...1.判断数据文件是否存在: 1 static public bool HasGameSaveData(string fileName) 2 { 3 if (File.Exists...GameSaveData)bf.Deserialize(file); 14 file.Close(); 15 } 16 } GameSaveData也就是游戏中要保存的某个数据类...,这里就省略了 读取数据要先判断文件是否存在,没有就新建一个;NewGameSaveData(fileName);中初始化后一般会立马写入(如何写见后面) 读取的过程是将文件打开后反序列化为对应的类型,...{ 9 var passCodeSet = new ES3Settings(ES3.EncryptionType.AES, filePassCode);//数据加密设置

    2.2K10

    SublimeText 粘贴图片保存到本地

    在写 Markdown 时,比较难的是把图片粘贴保存到本地,或上传到服务器。 本文提供一个简单的方式可以把剪贴板的图片粘贴保存本地。...[](image/文件名/文件名0.png) 如果需要修改保存的文件路径,那么需要修改 ImagePaste.py 文件,在开始修改,希望你有一些 py 开发的经验,如果没有的话,可能看不懂我在写什么...保存的路径在 get_filename 函数里面写,所以打开 get_filename 函数可以看到下面代码 def get_filename(self): view = self.view..." + abs_filename + "\nrel " + rel_filename) return abs_filename, rel_filename 这里的 gitbook_dir 就是用来保存图片的绝对路径...fn_without_ext, fn_without_ext, i))可以拿到合并了image文件夹和fn_without_ext去掉后缀名的文件名作为文件夹的相对路径,所以里面的修改就十分简单了 例如我需要把代码修改保存在

    1.9K20

    SublimeText 粘贴图片保存到本地

    在写 Markdown 时,比较难的是把图片粘贴保存到本地,或上传到服务器。 本文提供一个简单的方式可以把剪贴板的图片粘贴保存本地。...[](image/文件名/文件名0.png) 如果需要修改保存的文件路径,那么需要修改 ImagePaste.py 文件,在开始修改,希望你有一些 py 开发的经验,如果没有的话,可能看不懂我在写什么...保存的路径在 get_filename 函数里面写,所以打开 get_filename 函数可以看到下面代码 def get_filename(self): view = self.view..." + abs_filename + "\nrel " + rel_filename) return abs_filename, rel_filename 这里的 gitbook_dir 就是用来保存图片的绝对路径...fn_without_ext, fn_without_ext, i))可以拿到合并了image文件夹和fn_without_ext去掉后缀名的文件名作为文件夹的相对路径,所以里面的修改就十分简单了 例如我需要把代码修改保存在

    84140

    JS防止站点被恶意保存

    很多同学网站都在用静态博客,安全轻量的同时也带来了些许麻烦,正如首图中那样,站点被别人全盘撸走,反而比自己文章关键字还高.自己辛辛苦苦的耕耘变成了别人的果实…所以本文提供一下通过JS手段防止网站被扒皮的手段...let siteprotect=1;//做一个flag 然后用于下面判断这段JS是否执行 if(self !...let whitelist=['huai.pub','127.0.0.1','localhost','']; //host白名单;空的话,为以file类型打开,是为了防止保存到本地调试,如果不担心此条...把上面部分放到一个不得不运行且打开页面就运行的JS里面(不建议放到公共资源部分,比如 jQuery之类的 )…当然 需要按照注释修改为自己的参数; 之后将这条JS 加密 然后将第二部分放到页面底部的JS...中,同时也加密后再引入(siteprotect变量可以改名 且改掉值,最好使用随机值) 重要的是 JS一定要加密 且放到对站点效果影响大的JS中… 这样就算被别人恶意保存,基本也不会有大的问题了

    3.9K20

    使用JS访问本地数据库「建议收藏」

    1 前言 有时候,数据业务比较大,比如查询百万级的数据,如果使用JSP查询数据库,JSP的返回结果一般放在域名后面返回给客户端,而返回结果的长度是有限制的,数据过长可能会丢失部分数据;另一方面数据量大,...使用JS绕过后台Web服务器,直接访问本地数据库服务器,虽然会有些不安全,但却能够访问大数据,并且不占用带宽。...2案例 在本地SQL Server建立数据库testdb.mdf,建一个表stu,表下有三个属性:ID、name、gae。...创建连接对象 conn.Open("Driver={SQL Server};SERVER=localhost;Trusted_Connection=SSPI;DATABASE=testdb"); //打开数据库...;DataBase=testdb;UID=sa;Password=0.;"); //打开数据库 //这两种链接都可以,但上面那种较佳,任何登录名都可以 var rs = conn.Execute("

    3.4K10

    将BCS的bucket文件保存到本地

    将BCS的bucket文件保存到本地[PHP] 作者:matrix 被围观: 2,184 次 发布时间:2015-06-03 分类:兼容并蓄 零零星星 | 8 条评论 » 这是一个创建于...BCS的bucket是以前创建bae时设置的,保存了一些图片文件 怎样把云存储的文件备份到本地是一个问题啊。毕竟一个一个下载太麻烦,文件有些多。。。...如果里面的文件有点多,且你想保存下来 下载 :http://pan.baidu.com/s/1mgMhp92 使用说明: 请确保解压后有个空的TTSEE文件夹,它用来存放下载的文件 只能保存一个bucket...$objest,$file);//保存到同级TTSEE目录 参考: http://www.cnblogs.com/m199/p/3450675.html http://www.jb51.net/article.../57127.htm PS: 150710后续更新 把bcs文件下载到本地电脑后再上传到主机空间。

    2K20

    Android教程-保存数据-保存文件

    File 对象适用于用一种没有跳跃的从开始一直到结尾的方式读写大量数据. 例如,它很适合通过网络进行图片文件或者任何其它的文件交换. 本课程展示了如何在 你的应用中进行文件相关的基础操作....该方法会得到一个指定你想要保存的文件类型的参数,那样它们就可以在本地同其它公共文件组织在一起,比如 DIRECTORY_MUSIC 或者 DIRECTORY_PICTURES....查询空闲空间 ---- 如果你事先知道要保存多少数据,你就可以通过调用 getFreeSpace() 或者 getTotalSpace() 发现是否有足够空间保存这些数据,而不会导致一个 IOException...这种信息在避免填充的数据量超过一定的阈值时也同样有用 . 不过,系统并不能确保你可以写入同 getFreeSpace() 所获取到的剩余空间大小同等量的数据....如果返回的数量比你想要保存的数据多几个MB,或者如果文件系统占率低于90%,那么往往还算安全。否则,你可能就不应该再往里面写入了. 注意: 你并不一定要在保存你的文件之前检查剩余空间的数量.

    2.7K30
    领券