目录:

  1. localStorage
  2. sessionStorage
  3. cookie
  4. indexedDB

localStorage

  1. localStorage存储的数据能在跨浏览器会话保留
  2. 数据可以长期保留,关闭会话,数据不会被清除
  3. 存储的键值对,是以字符串的形式存储的,数值类型会自动转化为字符串。

用法

// 等价,键值对以字符串形式存储,和js对象不一样
window.localStorage.setItem('x',1) // '1'
window.localStorage.setItem('x','1') // '1' // 等价
localStorage.color = 'red'
localStorage['color'] = 'red'
localStorage.setItem('color','red') localStorage.setItem('age',18)
localStorage.getItem('age')
localStorage.removeItem('age')
localStorage.clear(); // 清除所有localStorage

参考:

  1. MDN:window.localStorage

sessionStorage

  1. 页面会话结束时会被清除
  2. 键值对以字符串形式存储

用法

sessionStorage.setItem('name','zhangsan')
sessionStorage.getItem('name')
sessionStorage.removeItem('name')
sessionStorage.clear()

运用

页面刷新时恢复表单内容

        <form action="#" method="post">
<label for="name">name
<input type="text" id="name" placeholder="Input your name" value="hello thank you ">
</label>
<button id="submit" type="submit">submit</button>
</form>
// 页面刷新时恢复表单内容
let name = document.getElementById('name'); // 事件侦听,存储输入框内容
name.addEventListener('change',function(e) {
window.sessionStorage.setItem('name',e.currentTarget.value)
}) // 判断有无缓存,没有返回null
if(sessionStorage.getItem('name')) {
name.value = sessionStorage.getItem('name');
}

cookie

是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。

用途

  1. 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  2. 个性化设置(如用户自定义设置、主题等)
  3. 浏览器行为跟踪(如跟踪分析用户行为等)

缺点

服务器指定cookie后,请求中都会携带cookie,会带来额外的性能开销。

创建cookie

res.setHeader('Set-Cookie',['type=ninjia','langauge=javascript'])  // nodejs
res.cookie('rememberme','1',{domanin:'example.com',expires:new Date()}) // express

在以后的请求中,req头部将被添加cookie信息,如:

  req.cookies // cookies: { rememberme: '1' },

cookie类别

  • 会话期cookie
  • 持久化cookie

JavaScript通过document.cookies操作cookie

只能访问非httpOnly标记的cookie

document.cookie = 'name=zhangsan'
document.cookie = 'age = 20' // 浏览器请求cookie中将会添加cookie

indexedDB

事务型数据库系统,用于存储大量结构化的数据

window.indexedDB.open('test') // 创建、打开数据库

参考:

localStorage sessionStorage cookie indexedDB的更多相关文章

  1. 客户端 localStorage, sessionStorage, cookie 的区别

    SessionStorage, LocalStorage, Cookie这三者都可以被用来在浏览器端存储数据,而且都是字符串类型的键值对! 区别在于前两者属于WebStorage,创建它们的目的便是存 ...

  2. localstorage sessionstorage cookie的区别

    一.基本概念 Cookie cookie比较小,大小限制在4kb左右,是网景公司的前雇员 LouMontulli 在1993年3月的发明.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记 ...

  3. localstorage sessionstorage cookie 备忘

    /* sessionStorage: 保存的数据用于浏览器的一次会话,当会话结束(通常是该窗口关闭),数据被清空: localStorage: 保存的数据长期存在,下一次访问该网站的时候,网页可以直接 ...

  4. 本地存储 localStorage/sessionStorage/cookie

    cookie是个基础的东西.是服务器发送到客户端,存储在客户端的一小段数据.可以存储一些配置信息,客户标识信息等.用户下次访问这个网站时,会把上次网站发来的cookie一同发送回去.cookie保存在 ...

  5. localStorage,sessionStorage,cookie使用场景和区别

    localStorage:HTML5新增的在浏览器端存储数据的方法.设置和获取localStorage的方法: 设置: localStorage.name = 'zjj'; 获取: localStor ...

  6. localStorage&sessionStorage&Cookie

    localStorage.sessionStorage.Cookie三者区别如下:

  7. localStorage,sessionStorage,cookie区别

    localStorage:HTML5新增的在浏览器端存储数据的方法.设置和获取localStorage的方法: 设置: localStorage.name = 'zjj'; 获取: localStor ...

  8. 深入了解浏览器存储:对比Cookie、LocalStorage、sessionStorage与IndexedDB

    摘要: 对比Cookie.LocalStorage.sessionStorage与IndexedDB 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 随着移动网络的发展与演化,我 ...

  9. 本地存储常用方式 localStorage, sessionStorage,cookie 的区别 和 服务器存储session

    本地存储:把一些信息存储到客户端本地(主要目的有很多,其中有一个就是实现多页面之间的信息共享)       1. 离线缓存(xxx.manifest)  H5处理离线缓存还是存在一些硬伤的,所以真实项 ...

随机推荐

  1. 常见的异步方式async 和 await

    之前研究过c#的async和await关键字,幕后干了什么,但是不知道为什么找不到相关资料了.现在重新研究一遍,顺便记录下来,方便以后查阅. 基础知识 async 关键字标注一个方法,该方法返回值是一 ...

  2. Python 经典面试题汇总之数据库篇

    数据库和缓存 1.列举常见的关系型数据库和非关系型都有那些? 关系型数据库(需要有表结构) mysql.oracle.splserver.postgresql.db2.sybase 非关系型数据库(是 ...

  3. 好代码是管出来的——C#的代码规范

    代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能.稳定性.安全性等等),而另外一个重要作用是给人阅读.对于机器来说只要代码正确就能够正确的运行程序,但是人不同,如果代码 ...

  4. 关闭windows系统的危险端口,命令行

    防火墙启用,增加禁用端口提供给外部访问 @echo off color E2 title 关闭常见的危险端口 echo 正在开启Windows防火墙 echo. netsh advfirewall s ...

  5. spring boot跨域问题

    跨域是指不同域名之间相互访问.跨域,指的是浏览器不能执行其他网站的脚本.它是浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制.也就是如果在A网站中,我们希望使用Ajax来获得B网站 ...

  6. TiDB 架构及设计实现

    一. TiDB的核心特性 高度兼容 MySQL 大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移. 水平弹性扩展 ...

  7. vue 利用mockJs 模拟数据

    工作这几年一直用Java 开发,前端的技术自己也忘得差不多了(实际上自己也不怎么会),最近参与的项目是用VUE +  Element-ui + springboot 写的,由于需求没有定,先画一个de ...

  8. Kafka Frequently Asked Questions

    This is intended to be an easy to understand FAQ on the topic of Kafka. One part is for beginners, o ...

  9. c++11の顺序容器

      容器是一种容纳特定类型对象的集合.C++的容器可以分为两类:顺序容器和关联容器.顺序容器的元素排列和元素值大小无关,而是由元素添加到容器中的次序决定的.标准库定义了三种顺序容器的类型:vector ...

  10. ABP之调试

    虽然通常情况下不需要,但是Abp还是提供了能在调试项目中进入Abp源码的方法.. 所有的ABP NuGet包都启用了源码连接.这意味着我们可以在我们的项目中调试ABP源码,要启用它,更改Visual ...