javascript基础二十四:JavaScript中本地存储的方式有哪些?区别及应用场景?

这篇具有很好参考价值的文章主要介绍了javascript基础二十四:JavaScript中本地存储的方式有哪些?区别及应用场景?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

javascript基础二十四:JavaScript中本地存储的方式有哪些?区别及应用场景?
一、方式
javaScript本地缓存的方法我们主要讲述以下四种:

  • cookie
  • sessionStorage
  • localStorage
  • indexedDB

cookie

Cookie,类型为「小型文本文件」,指某些网站为了辨别用户身份而储存在用户本地终端上的数据。是为了解决 HTTP无状态导致的问题

作为一段一般不超过 4KB 的小型文本数据,它由一个名称(Name)、一个值(Value)和其它几个用于控制 cookie有效期、安全性、使用范围的可选属性组成

但是cookie在每次请求中都会被发送,如果不使用 HTTPS并对其加密,其保存的信息很容易被窃取,导致安全风险。举个例子,在一些使用 cookie保持登录态的网站上,如果 cookie被窃取,他人很容易利用你的 cookie来假扮成你登录网站

关于cookie常用的属性如下:

Expires 用于设置 Cookie 的过期时间

Expires=Wed, 21 Oct 2015 07:28:00 GMT

Max-Age 用于设置在 Cookie 失效之前需要经过的秒数(优先级比Expires高)

Max-Age=604800

Domain指定了 Cookie 可以送达的主机名

Path指定了一个 URL路径,这个路径必须出现在要请求的资源的路径中才可以发送 Cookie 首部

Path=/docs # /docs/Web/ 下的资源会带 Cookie 首部

标记为 Secure的 Cookie只应通过被HTTPS协议加密过的请求发送给服务端

通过上述,我们可以看到cookie又开始的作用并不是为了缓存而设计出来,只是借用了cookie的特性实现缓存

关于cookie的使用如下:

document.cookie = ‘名字=值’;

关于cookie的修改,首先要确定domain和path属性都是相同的才可以,其中有一个不同得时候都会创建出一个新的cookie

Set-Cookie:name=aa; domain=aa.net; path=/ # 服务端设置
document.cookie =name=bb; domain=aa.net; path=/ # 客户端设置

最后cookie的删除,最常用的方法就是给cookie设置一个过期的事件,这样cookie过期后会被浏览器删除

localStorage

HTML5新方法,IE8及以上浏览器都兼容

特点

  • 生命周期:持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的
  • 存储的信息在同一域中是共享的
  • 当本页操作(新增、修改、删除)了localStorage的时候,本页面不会触发storage事件,但是别的页面会触发storage事件。
  • 大小:5M(跟浏览器厂商有关系)
  • localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
  • 受同源策略的限制

下面再看看关于localStorage的使用

设置

localStorage.setItem(‘username’,‘cfangxu’);

获取

localStorage.getItem(‘username’)

获取键名

localStorage.key(0) //获取第一个键名

删除

localStorage.removeItem(‘username’)

一次性清除所有存储

localStorage.clear()

localStorage 也不是完美的,它有两个缺点:

  • 无法像Cookie一样设置过期时间
  • 只能存入字符串,无法直接存对象
localStorage.setItem('key', {name: 'value'});
console.log(localStorage.getItem('key')); // '[object, Object]'
//如果要存入对象,我们就把对象通过JSON.stringify将对象转成字符串
// 取值在同个JSON.parse将字符串转成对象

sessionStorage

sessionStorage和 localStorage使用方法基本一致,唯一不同的是生命周期,一旦页面(会话)关闭,sessionStorage 将会删除数据

扩展的前端存储方式

indexedDB是一种低级API,用于客户端存储大量结构化数据(包括, 文件/ blobs)。该API使用索引来实现对该数据的高性能搜索

虽然 Web Storage对于存储较少量的数据很有用,但对于存储更大量的结构化数据来说,这种方法不太有用。IndexedDB提供了一个解决方案

优点:

  • 储存量理论上没有上限
  • 所有操作都是异步的,相比 LocalStorage 同步操作性能更高,尤其是数据量较大时
  • 原生支持储存JS的对象
  • 是个正经的数据库,意味着数据库能干的事它都能干

缺点:

  • 操作非常繁琐
  • 本身有一定门槛

关于indexedDB的使用基本使用步骤如下:

  • 打开数据库并且开始一个事务
  • 创建一个 object store
  • 构建一个请求来执行一些数据库操作,像增加或提取数据等。
  • 通过监听正确类型的 DOM 事件以等待操作完成。
  • 在操作结果上进行一些操作(可以在 request对象中找到)

关于使用indexdb的使用会比较繁琐,大家可以通过使用Godb.js库进行缓存,最大化的降低操作难度

二、区别

关于cookie、sessionStorage、localStorage三者的区别主要如下:

  • 存储大小:cookie数据大小不能超过4k,sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大
  • 有效时间:localStorage存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;sessionStorage数据在当前浏览器窗口关闭后自动删除;cookie设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
  • 数据与服务器之间的交互方式,cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端;sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存

三、应用场景

在了解了上述的前端的缓存方式后,我们可以看看针对不对场景的使用选择:文章来源地址https://www.toymoban.com/news/detail-475488.html

  • 标记用户与跟踪用户行为的情况,推荐使用cookie
  • 适合长期保存在本地的数据(令牌),推荐使用localStorage
  • 敏感账号一次性登录,推荐使用sessionStorage
  • 存储大量数据的情况、在线文档(富文本编辑器)保存编辑历史的情况,推荐使用indexedDB

到了这里,关于javascript基础二十四:JavaScript中本地存储的方式有哪些?区别及应用场景?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 原生JavaScript实现本地存储(localStorage)和会话存储(sessionStorage)

    目录 一、简单介绍 二、localStorage本地存储 三、sessionStorage会话存储 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是

    2023年04月08日
    浏览(48)
  • JavaScript 数组Array存储方式及对象Object

    一、数组的存储 1、当声明一个变量时,var a = 111; 在后台计算机翻译时,var声明 a变量 所以此时会产生一个栈内存,变量 a 的初始值为undefined,然后 = 111 ; undefined消失,111的值被赋值给了a。如果多个变量赋值的话,栈内存的执行顺序是先进后出的顺序。也叫做压栈。栈内存

    2024年02月08日
    浏览(48)
  • javascript基础二十一:说说你对BOM的理解,常见的BOM对象你了解哪些?

    一、是什么 BOM (Browser Object Model),浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象 其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退,前进,刷新,浏览器的窗口发生变化,滚动条的滚动,以及获取客户的一些信息如:浏览器品牌版本,屏幕分

    2024年02月07日
    浏览(43)
  • MySQL存储过程(二十四)

    你相信吗, 相信那一天的夕阳吗? 上一章简单介绍了 MySQL的索引(二十三),如果没有看过,请观看上一章 MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起, 应用程序无须关注存储过程和函数内部复杂的SQL逻辑, 而只需要简单地调用存储过

    2024年02月14日
    浏览(42)
  • JavaScript系列从入门到精通系列第二十篇:使用工厂方法创建JavaScript对象,JavaScript构造函数详解,JavaScript类概念的介绍

    文章目录 一:使用工厂方法创建对象 1:原始写法 2:工厂方式 3:结果验证  二:构造函数 1:什么是构造函数 2:构造函数和普通函数的区别 3:构造函数的执行流程 三:类 1:什么是类 2:如何检查一个对象是否是个类的实例 3:Object的地位 四:构造函数修改 1:重大问题

    2024年02月08日
    浏览(43)
  • JavaScript从入门到精通系列第二十七篇:详解JavaScript中的包装类

      文章目录 前言 一:包装类 1:包装类作用 2:包装类成员 3:包装类作用 4:包装类使用         包装类就类似于把一个草根包装成一个明星,就类似于Java中的Integer。         JavaScript中的基本数据类型String Number Boolean Null Undefined         引用数据类型:Object         J

    2024年02月06日
    浏览(46)
  • JavaScript从入门到精通系列第二十八篇:详解JavaScript中的字符串的方法

      文章目录 前言 一:String中的方法 1:获取字符串的长度 2:返回指定位置的字符 3:返回指定位置的字符Unicode编码 4:返回指定位置的字符Unicode编码  二:比较常用的 1:连接两个字符串 2:检索一个字符串中指定内容  3:从后检索一个字符串中指定内容   4:截取字符串

    2024年02月06日
    浏览(55)
  • JavaScript进阶(二十六):ES各版本特性详解

    ECMAScript 是一种由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为 JavaScript 或 JScript ,所以它可以理解为是 JavaScript 的一个标准,但实际上后两者是ECMA-262标准的

    2024年02月07日
    浏览(40)
  • MySQL基础(二十四)索引的数据结构

    顺序查询和数据使用二叉树结构再进行查询,如图: 2.1 索引概述 MySQL官方对索引的定义为: 索引(Index)是帮助MySQL高效获取数据的数据结构 。 **索引的本质:**索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方

    2024年02月03日
    浏览(46)
  • JavaScript进阶(二十九): 走近 es6 之 new.target

    源码阅读过程中,发现以下语句 鉴于该语法为 es6 所有,项目在编译过程中,控制台报 Unexpected token: punc(.) 错误。按照常规处理,应用 babel-loader 即可解决此类问题。在 .babelrc 的 经过实践发现, build 阶段依旧报错。 故采用第二套解决方案,使用 es5 语法重写 es6 。 es5 的构造

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包