当前位置: 首页 > news >正文

客户端存储localStorage和sessionStorage以及Cookie

前言

正常情况下,我们前端写的静态页面,只要刷新,就重置了,无法保留任何信息。为解决这一弊端

我们可以利用js中的客户端数据存储。

简介

在JS中存储在客户端数据有很多方式:Storage有两个对象:localStorage (本地存储)和sessionStorage(临时存储),Cookie,indexedDB(一般用于游戏开发存储体积较大)

总结

Cookie、localStorage、SessionStorage的区别

Cookie需要借助http,而Storage不需要

Cookie存储空间小4kb,Storage 空间大5Mb

Cookie的操作比较麻烦,Storage有相应的api帮助我们快速操作。

Cookie可以设置过期时间,Storage不能,localStorage没有过期时间,SessionStorage浏览器关闭就消失。

Cookie还可以给不同的path和域名设置cookie,storage不能。

localStorage设置后,整个域名共享,SessionStorage只有对应的页面可以使用,其他页面无法使用。

他们可以实现的功能大致相同。

Storage

Storage分为localStorage和sessionStorage,他们有相同的API可以进行添加、修改、删除、清空操作。

  • setItem(key, value)
  • removeItem(key)
  • getItem(key)
  • clear()

这两个存储的方法一致,是一样的效果。

这个中间只能存字符串,引用类型存储时会自动调用toString方法,如果想要存储对象或者数组,可以使用JSON.stringify进行转换,转换为字符串

特性

本地存储localStorage

存储数据到本地,只要你不主动删除,并且电脑浏览器不被卸载,这个数据就永远可以被获取到存储大小一般为10m甚至更大,在所有同源窗口中都是共享的,不参与浏览器与服务器的传递;

临时存储sessionStorage

存储数据在本地,只要浏览器关闭,则会话存储就会被清空,存储大小一般为5m甚至更大,不在不同的浏览器窗口中共享,不参与浏览器与服务器的传递;

cookie

相比Storage存储量更小仅为4k,前后端人员都能设置cookie,在所有同源窗口中都是共享的,参与浏览器与服务器的传递,还有第一次请求是没有cookie的,通常是由后端人员设置,服务器在收到请求之后会在响应中添加头部 Set-Cookie,并标识

cookie的缺点:

  • 存储小。只有4kb
  • 自动被携带http请求中,导致请求时间变长。
  • 必须依赖服务器
  • cookie比较早,相关api比较老,不好操作。需要人为封装函数。

相关文章:

  • Python学习笔记:Jupyter Notebook快速入门案例:学习时间与成绩的关系
  • 嵌入式软件工程师面试题(三)
  • K8S搭建共享存储(以MySQL例)
  • 【C++】类和对象(中篇)(万字)
  • 虹科教您 | 虹科TSN配置软件RELY-TSN-Configurator基本操作指南
  • 【python基础】super是啥,你会用吗?
  • 反向传播和其他微分算法
  • 爆肝撸了个“羊了个羊”通关助手
  • Flutter快学快用17 打包发布:Flutter 应用,你离线上运营只差最后一步
  • 效果超强!基于Prompt Learning、检索思路实现文本分类,开源数据增强、可信增强技术
  • 第五次线上面试总结(2022.9.21 二面)
  • 多容器SSM整合
  • 如何用架构的思维为云原生做减法?
  • 程序员面试必备软技能,值得收藏!
  • IDEA社区版(Community Edition)创建Springboot-Web项目,Java
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • angular组件开发
  • CentOS 7 修改主机名
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • mysql中InnoDB引擎中页的概念
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • pdf文件如何在线转换为jpg图片
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前嗅ForeSpider教程:创建模板
  • 如何使用 JavaScript 解析 URL
  • 深度学习在携程攻略社区的应用
  • 使用Gradle第一次构建Java程序
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 思维导图—你不知道的JavaScript中卷
  • !!Dom4j 学习笔记
  • (1)(1.9) MSP (version 4.2)
  • (1)常见O(n^2)排序算法解析
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4)(4.6) Triducer
  • (附源码)springboot教学评价 毕业设计 641310
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十) 初识 Docker file
  • (一)认识微服务
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .Mobi域名介绍
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Reactor简单使用教程
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .net打印*三角形
  • .NET下的多线程编程—1-线程机制概述
  • @Mapper作用
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [383] 赎金信 js
  • [Android 13]Input系列--获取触摸窗口