数据持久化之Web存储

​ 前端数据持久化是指在前端(客户端)应用中将数据保存在本地,使得数据在页面刷新、关闭或重新打开后依然保持存在的过程。在Web开发中,前端数据持久化可以使得用户不必每次都从服务器中获取数据。

常见的前端持久化方法:

  1. Cookie:Cookie是一种小型的存储在用户浏览器中的数据,通常由服务器发送给浏览器,然后在每次请求时由浏览器发送给服务器,他们可以设置过期时间,用于在一段时间内保持数据。但是由于大小限制和安全性问题,Cookie不适合存储大量的数据。
  2. Web Storage(本地存储):Web Storage包括两种类型:localStorange和sessionStorage。它们都是在浏览器中保存键值对的简单数据存储机制,其中,localStorange的数据在页面关闭后仍然保持,直到用户清理或过期,而sessionStorage的数据仅在当前会话窗口有效,关闭窗口后数据将被删除。
  3. IndexedDB:Index是一种高级的客户端数据库,允许在浏览器中存储大量机构化数据。他提供了异步的API,可以更有效的操作数据。IndexDB是一种较复杂的持久化方案,适用于需要大量数据存储的应用。
  4. Service Workers:是在浏览器后台运行的脚本,可以拦截网络请求并缓存响应。通过使用 Service Workers,开发人员可以实现离线应用程序和缓存数据,从而使应用在断网情况下仍然可用。
  5. 其他第三方库和工具: 除了上述基本的前端持久化方案,还有一些第三方库和工具可供选择,例如 PouchDB(基于 IndexedDB 的数据库解决方案)、localForage 等。

Web存储简介

  1. 本地存储(Local Storage):

    • 本地存储允许网页在浏览器中长期保存数据,即使用户关闭浏览器或者重启电脑,数据仍然保留
    • 它基于键值对方式存储数据,可以存储大量数据(几MB到几十MB)
    • 使用localStorage对象访问和操作本地数据库,数据存储在用户的本地文件系统中
    //存储数据到本地数据库
    localStorage.setItem('username','JohnDoe')
    //从本地存储中获取数据
    localStorage.getItem('username')
    //删除本地存储中的数据
    localStorage.removeItem('username')
    
  2. 会话存储(Session Storage)

  • 会话存储允许网页在用户的浏览器中保存数据,但是数据仅在浏览器窗口打开期间有效,一旦用户关闭了浏览器窗口或标签,数据就会被删除

  • 类似于本地存储,会话存储也是基于键值对的方式存储数据,但数据的声明周期受会话限制

  • 使用SessionStorage对象访问和操作绘画存储数据,数据也会存储在用户的本地文件系统中

    //存储数据到会话存储
    sessionStorage.setItem('username','zhangsan')
    //从会话存储中获取数据
    sessionStorage.getItem('username')
    //从会话存储中删除数据
    sessionStorage.removeItem('username')
    

会话存储的特点和用途:

  • 相比传统的Cookie机制,Web存储具有更大的存储容量。

  • Web存储适用于存储临时数据、用户设置、本地缓存等信息。

  • 由于数据存储在客户端,不会随着每个HTTP请求发送到服务器,因此可以减少服务器负担,提高网站性能和响应速度。

  • 注意:由于数据存储在用户本地,对于敏感数据和安全性要求较高的数据,需要采取额外的加密和安全措施。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何搭建一个口才培训的网站?需要具备哪些条件?

论文题目:如何搭建一个口才培训的网站及所需条件 摘要: 本文探讨了如何搭建一个口才培训的网站,并详细分析了所需的关键条件。口才培训作为一种重要的社交技能,能够帮助人们提升自信和影响力,因此具有广阔的市场前景。…

day17 | 654.最大的二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

文章目录 一、最大的二叉树二、合并二叉树三、二叉搜索树中的搜索四、验证二叉搜索树 一、最大的二叉树 654.最大的二叉树 构建二叉树的题目,都用前序遍历。 因为我们一定要先构建根节点,才能继续向后构建。 递归函数的参数和返回值: Tree…

AssetBundle学习

官方文档:AssetBundle 工作流程 - Unity 手册 (unity3d.com) 之前写的博客:AssetBundle学习_zaizai1007的博客-CSDN博客 使用流程图: 1,指定资源的AssetBundle属性 (xxxa/xxx)这里xxxa会生成目录&…

redux-promise-middleware和applyMiddleware的理解与使用

一、作用: applyMiddleware是一个中间件,通常和applyMiddleware结合使用,是dispatch与reducers之间的应用,用于处理dispatch发送的异步action操作 二、使用 1、安装redux-promise-middleware cnpm i redux-promise-middleware…

【Android】使用 CameraX 实现基础图像分析功能

1. 基础开发环境 JDK:JDK17 Android Studio:Android Studio Giraffe | 2022.3.1 Android SDK:Android API 34 Gradle: gradle-8.0-bin.zip CameraX Version: 1.1.0-alpha05 2. 添加相关依赖 在 build.gradle 中添加 CameraX 的相关依赖 // *…

Micropython STM32F4入门点灯第一课

Micropython STM32F4入门点灯第一课 📌固件刷可参考前面一篇《STM32刷Micropython固件参考指南》📍固件下载:https://micropython.org/download/?mcustm32f4🔖本例程基于STM32F4DISC,主控芯片STM32F407VGT6&#x1f4…

ospf复习

工作过程 启动OSPF配置之后,OSPF会向本地所有激活OSPF的接口发送hello包,以组播 224.0.0.5(所有运行OSPFV2协议的设备监听的地址)的形式发送。hello包中将携带本 地的RID及本地已知邻居的RID,之后,将收集到…

vue 混入(mixin)的使用

在 vue 组件内,如果想将一些公共功能,如组件、方法、钩子函数等复用,混入是一个很好的选择。 现在开始我们的混入使用吧 1、我们可以创建一个目录mixins,在创建一个comment.js文件如图: // 在 common.js 里写你想共享…

20230803激活手机realme GT Neo3

20230803激活手机realme GT Neo3 缘起: 新买的手机:realme GT Neo3 需要确认: 1、4K录像,时间不限制。 【以前的很多手机都是限制8/10/12/16分钟】 2、通话自动录音 3、定时开关机。 4、GPS记录轨迹不要拉直线:户外助…

小程序学习(四):WXML模板语法

WXML模板语法-数据绑定 1.数据绑定的基本原则 ①在data中定义数据 ②在WXML中使用数据 2.动态绑定属性 WXML模板语法-事件绑定 3.什么是事件 4.小程序中常用的事件 5.事件对象的属性列表 6.target和currentTarget的区别 7.bindtap的语法格式 8.在事件处理函数中为data中的数据…

DC-2靶机

文章目录 信息收集漏洞发现漏洞利用 DC-2介绍 DC-2环境下载 请注意,您需要将渗透测试设备上的 hosts 文件设置为: 192.168.0.145 dc-2 显然,将 192.168.0.145 替换为 DC-2 的实际 IP 地址。 它将使生活变得更加简单(如果没有它&am…

LeetCode513. 找树左下角的值

513. 找树左下角的值 文章目录 [513. 找树左下角的值](https://leetcode.cn/problems/find-bottom-left-tree-value/)一、题目二、题解方法一:递归法(层序遍历,深度优先搜索)**不足之处以及如何改进** 方法二:迭代 一、…

Gitignore忽略文件

默认情况下,Git会监视我们项目中的所有内容,但是有些内容比如mode_modules中的内容,我们不希望他被Git所管理。 我们可以在我们项目目录中添加一个 .gitignore 文件来设置那些需要git忽略的文件。

屏幕取色器Mac版_苹果屏幕取色工具_屏幕取色器工具

Sip for Mac 是Mac系统平台上的一款老牌的颜色拾取工具,是设计师和前端开发工作者必不可少的屏幕取色软件,你只需要用鼠标点一下即可轻松地对屏幕上的任何颜色进行采样和编码,并将颜色数据自动存到剪切板,方便随时粘贴出来。 Sip…

GPIO简介

一、GPIO GPIO(General-purpose input/output)即通用型输入输出,GPIO可以控制连接在其之上的引脚实现信号的输入和输出 芯片的引脚与外部设备相连,从而实现与外部硬件设备的通讯、控制及信号采集等功能 LED实验步骤 实验步骤 以L…

使用Golang反射技术实现一套有默认值的配置解析库

在实际开发中,我们往往会给一个逻辑设计一套配置文件,用于根据不同环境加载不同配置。 比如生产环境和测试环境数据库的地址不一样,我们就需要在配置文件中设置不同的值。但是配置文件中又有一些相同值的配置项,比如数据库的名称等…

Spring事务传播机制、实现方式、失效场景即原理

贴一篇源码分析的好文章:https://blog.csdn.net/qq_30905661/article/details/114400417 本质: 一个事务对应一个数据库连接。 通过 this 来调用某个带有 Transactional 注解的方法时,这个注解是失效的,可以看做这个方法&#x…

Cocos Creator不规则按钮

实现该功能需要用到组件PolygonCollider2D,官方链接: https://docs.cocos.com/creator/3.4/manual/zh/physics-2d/physics-2d-collider.html 创建组件 创建一个精灵节点: 创建碰撞组件PolygonColider2D,如图 给按钮添加多边形碰…

链表的总体涵盖以及无哨兵位单链表实现——【数据结构】

😊W…Y:个人主页 在学习之前看一下美丽的夕阳,也是很不错的。 如果觉得博主的美景不错,博客也不错的话,关注一下博主吧💕 在上一期中,我们说完了顺序表,并且提出顺序表中的问题 1. 中…

无涯教程-Lua - 函数声明

函数是一起执行任务的一组语句,您可以将代码分成单独的函数。 Lua语言提供了程序可以调用的许多内置方法。如方法 print()打印在控制台中作为输入传递的参数。 定义函数 Lua编程语言中方法定义的一般形式如下- optional_function_scope function function_name(…