js【详解】本地存储 Cookie、sessionStorage、localStorage

简介: js【详解】本地存储 Cookie、sessionStorage、localStorage

【考题】Cookie、sessionStorage、localStorage的区别

特性 Cookie sessionStorage localStorage
数据有效期 可自定义失效时间,默认是关闭浏览器后失效 仅在当前会话下有效,关闭页面或浏览器后被清除 永久保存,除非代码/手动删除

存储数据 4KB 内 5MB 内
与服务器端通信 每次都会携带在HTTP头中,增加了请求数据量,如果cookie保存过多数据会影响性能 仅在客户端(即浏览器)中保存,不参与和服务器的通信
易用性 原生Cookie接口(document.cookie)不方便使用,通常使用插件js-cookie来操作Cookie 原生接口基本满足需求,也可再次封装来对Object和Array有更好的支持
使用场景

HTTP 请求需携带的信息,如鉴权token(判断用户是否登录)等

但在移动端表现不理想

任意需保存在客户端(即浏览器)的数据,如购物车信息、HTML5游戏的本地数据等

Cookie的用法

大多数浏览器只允许每个站点存储 50 个 Cookie;注意这里的50个是指主键值,也就是50条Cookies记录,但是每个Cookies记录还可以包含若干子键。

如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。有些浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制,通常为 300 个。

安装依赖

npm install js-cookie --save

导入依赖

import Cookies from 'js-cookie'

使用方法

// 新增/修改值(默认对整个站点有效)
Cookies.set("name", "朝阳");
// 指定Cookies有效期——适用于整个站点,7天内有效
Cookies.set('name', '朝阳', {expires: 7});
// 指定Cookies有效性——只适用于 /index 路由的页面,7天内有效,
Cookies.set('name', '朝阳', {expires: 7, path: '/index'});
 
// 获取值
let name = Cookies.get("name");
// 获取所有Cookies
let allCookies = Cookies.get();
 
// 删除值
Cookies.remove("name");
// 删除指定页面的 Cookies值
Cookies.remove('name', {path: '/index'});
 
//清除所有cookie(无需js-cookie依赖)
function clearAllCookie() {
    var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
    if(keys) {
        for(var i = keys.length; i--;)
            document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
    }
}

Cookie操作引用类型的数据(数组、对象等)

let user1 = {
    name: '朝阳',
    age: 18
}
 
// 存入Cookie
Cookies.set('user1', JSON.stringify(user1))
 
// 从Cookie中取出
let user1Temp = JSON.parse(Cookies.get('user1'))

sessionStorage的用法

// 新增/修改值
sessionStorage.setItem("name","朝阳");
// 获取值
let name=sessionStorage.getItem("name");
// 删除值
sessionStorage.removeItem("name");
// 清空值
sessionStorage.clear();

若操作引用类型的数据(数组、对象等),存入时,使用 JSON.stringify(data)将数据转化为字符串;取出时,使用JSON.parse()将数据还原

localStorage的用法

  • 如果存储内容过多,会消耗内存空间,导致页面卡顿
  • 浏览器的隐私模式下不可读取
  • localStorage 也存在同源策略,不同域名下的localStorage数据并不互通。
// 新增/修改值
window.localStorage.setItem("name","朝阳");
// 获取值
let name=window.localStorage.getItem("name");
// 删除值
window.localStorage.removeItem("name");
// 清空值
window.localStorage.clear();
 
// 引用类型的数据(数组、对象等),需先转换为字符串后,再存入
let list = [1,2,3]
window.localStorage.setItem("list",JSON.stringify(list));
 
// 读取非字符串类型的数据,记得先解析
let list2= JSON.parse(window.localStorage.getItem("list"));

浏览器中查看Cookie、sessionStorage、localStorage

F12开启浏览器调试窗口

Chrome谷歌浏览器

Firefox 火狐浏览器

360极速浏览器


目录
相关文章
|
1天前
|
存储 前端开发 安全
JavaScript进阶 - 浏览器存储:localStorage, sessionStorage, cookies
【7月更文挑战第2天】探索Web存储:localStorage持久化,sessionStorage会话限定,cookies则伴随HTTP请求。了解它们的特性和限制,如localStorage的5MB容量限制、跨域问题,sessionStorage的生命周期,及cookies的安全与带宽消耗。使用时需权衡安全、效率与应用场景。示例代码展示存储与检索方法。
|
12天前
|
存储 移动开发 JavaScript
对于session、cookie、 localStorage和SessionStorage的理解
对于session、cookie、 localStorage和SessionStorage的理解
21 0
|
12天前
|
JavaScript 前端开发 数据安全/隐私保护
JS中使用Cookie实现记住密码以及设置密码过期时间
JS中使用Cookie实现记住密码以及设置密码过期时间
4 0
|
15天前
|
存储 JavaScript 前端开发
JavaScript如何使用Cookie存值
JavaScript如何使用Cookie存值
11 0
|
2月前
|
存储 缓存 JavaScript
JavaScript本地存储的方式有哪些
本文介绍了四种Web存储技术:localStorage用于长期存储用户数据,关闭浏览器后仍保留;sessionStorage仅在会话期间存储数据,浏览器关闭后消失;Cookie存储少量字符串数据,通常用于用户身份识别;IndexedDB则用于大量结构化数据的存储,适合复杂应用的需求。每种技术都有其特定的使用场景和优缺点。
|
20天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的校园竞赛管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的校园竞赛管理系统附带文章源码部署视频讲解等
166 63
|
20天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的校园健康驿站管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的校园健康驿站管理系统附带文章源码部署视频讲解等
37 5
|
7天前
|
XML 缓存 JavaScript
一篇文章讲明白JS模板引擎之JST模板
一篇文章讲明白JS模板引擎之JST模板
11 2
|
20天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的校园食堂订餐系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的校园食堂订餐系统附带文章源码部署视频讲解等
51 10
|
20天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的校园失物招领网站附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的校园失物招领网站附带文章源码部署视频讲解等
29 9