前端数据存储方案集合(cookie localStorage等)以及详解 (二)
前端数据存储方案集合(cookie localStorage等)以及详解 (二)
在之前的文章中已经介绍到了 前端存储方案中的 cookie 。 但是 cookie 的存储上限是 4KB。 如果超过了 4KB ,在获取cookie 的时候会返回空值。
那如果存储内容超过 4kb,我们该如何处理呢?
这里我们将分别 介绍 几种前端存储方式: localStorage, sessionStorage,websql 和indexeddb。
一、localStorage
1.1 localStorage 是什么?
是 被 W3C 标准化之后的网页存储的一种方式, 原本是属于 HTML5 的存储方案,后来被 独立出来,适用于 IE 8+,FF 2+,Safari 4+,chrome 4+, Opera 10.50+。 (意思 就是 PC 上 和 H5 都可以愉快的使用啦~)
1.2 localStorage 如何使用
localStorage.getItem(key) 获取指定key本地存储的值
localStorage.setItem(key,value) 将value存储到key字段
localStorage.removeItem(key) 删除指定key本地存储的值
1.3 注意事项
首先,我们进入浏览器看下 localStorage 长什么样子。
对,就是这么就简单, k / v 组成, 和cookie 的区别还是 挺大的。 没有 path time 等等限制。
1)存储时间: localStorage的存储周期比sessionStorage 长 (这里的 sessionStorage 我们会在下文中介绍到) ,如果用户不清理的话,是可以永久存储的。
2)访问限制: 另外 也有访问的限制, localStorage 与 sessionStorage虽然相似,但是访问限制却不尽相同,localStorage的访问域默认设定为设置localStorage的当前域,其他域名不可以取。这点与sessionStorage相同,但是与sessionStorage不同的是,localStorage设定后,新开tab是可以访问到的。
3)大小限制及检测 标准建议对于每个domain,localStorage大小为5M,达到限制时浏览器可以去问用户是否允许增加存储空间。
4)可以用来干嘛? 因为 localStorage 可以长期存储,只要用户不刻意去清除。 那么我们往往可以提前存入一些 用户需要访问,而且还是需要 服务器加载的文件等等。 这样一方面可以加快页面加载速度。另外一方面也可以 减少服务器压力。
二、sessionStorage
这里说的 sessionStorage 和 localStorage 的区别就在于, 用户关掉了 浏览器的当前页。 sessionStorage 存储的数据就销毁掉了。
1.1 用法
sessionStorage.getItem(key) 获取指定key本地存储的值
sessionStorage.setItem(key,value) 将value存储到key字段
sessionStorage.removeItem(key) 删除指定key本地存储的值
1.2 访问限制
当前 tab 存储的 sessionStorage, 只能在 当前 tab页才能访问到, 如果 打开同样域名的 tab 去访问 之前 tab页 存储的 sessionStorage 是无法读取到的。
所以 sessionStorage 是一个 tab 级别的 存储。
1.3 可以做什么?
当然,这么弱的 存储功能可以做什么 呢? 要相信存在即是 合理的。
最常见的一个功能就是,如果 我们在 视频网站看视频不小心刷新了 某个我们正在播放视频的页面。 这个时候 视频的进度条会提示你 上次播放时间, 是否继续上次的播放, 其实 这个时间就可以保存到 sessionStorage 。 可能这只是比较牵强的一个例子。 大概就是这么使用
三、websql与indexeddb
前面讲到了 sessionStorage 和 localStorage 。 这里介绍的 websql与indexeddb 和之前的二者 是有一定 区别的。
1.1 websql
1) 是什么?
websql更像是关系型数据库,并且使用sql语句进行操作。
2) 注意事项
虽然现在 websql 已经不再继续维护了, 但是因为 它的起步早,所以兼容性是 异常的OK 的。
如果遇到了 兼容性相关的问题,websql 是一个不错的选择。
1.2 indexedDB
1)是什么?
2) 访问权限:
indexedDB 和 websql 在访问权限上 和 localStorage 是一致的。 均是只能子啊创建数据库下的域名才能访问,而且不能指定访问域名。
3) 存储时间: 同样是永久,除非用户清除数据
4) 可以做什么?
当我们是在做一个离线应用,或者webapp的时候,可以考虑使用本地数据库中存取数据。如果不存大量的数据的话,其实localStorage就够用了。亦或者,你想把一张用户的皮肤图片之类的大量数据存入客户端缓存起来,localStorage已经不够用了的话,也可以尝试一下websql与indexeddb。
前端数据存储方案集合(cookie localStorage等)以及详解 (二)的更多相关文章
- 前端数据存储方案集合(cookie localStorage等)以及详解 (一)
客户端.前端 存储 一. 起 因 首先解释下为什么想来写这个关于前端存储的问题,因为最近在做小程序相关的内容.但是,在开发过程中,我们难免会遇到 token 存储. 代码缓存. 图片存储等等. 以及可 ...
- 浏览器本地数据存储解决方案以及cookie的坑
本地数据存储解决方案以及cookie的坑 问题: cookie过长导致页面打开失败 背景: 在公司的项目中有一个需求是打开多个工单即在同一个页面中打开了多个tab(iframe),但是需要在刷新时只刷 ...
- 本地数据存储解决方案以及cookie的坑
本地数据存储解决方案以及cookie的坑 问题: cookie过长导致页面打开失败 背景: 在公司的项目中有一个需求是打开多个工单即在同一个页面中打开了多个tab(iframe),但是需要在刷新时只刷 ...
- Java基础知识强化之IO流笔记46:IO流练习之 把文本文件中数据存储到集合中的案例
1. 把文本文件中数据存储到集合中 需求:从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合. 分析: 通过题目的意思我们可以知道如下的一些内容, 数据 ...
- Android Learning:数据存储方案归纳与总结
前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几 ...
- Sqlserver 高并发和大数据存储方案
Sqlserver 高并发和大数据存储方案 随着用户的日益递增,日活和峰值的暴涨,数据库处理性能面临着巨大的挑战.下面分享下对实际10万+峰值的平台的数据库优化方案.与大家一起讨论,互相学习提高! ...
- cookie ,session 和localStorage的区别详解
2019独角兽企业重金招聘Python工程师标准>>> cookie ,session 和localStorage的区别详解 博客分类: js 当你在浏览网站的时候,WEB 服务器会 ...
- hibernate集合映射inverse和cascade详解
hibernate集合映射inverse和cascade详解 1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或 ...
- 前端后台以及游戏中使用Google Protocol Buffer详解
前端后台以及游戏中使用Google Protocol Buffer详解 0.什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更 ...
随机推荐
- IntelliJ IDEA:给web应用提供JSTL支持
最近在看<Head First Servlet JSP>学习JSP,看到JSTL一章,为了添加JSTL支持折腾了好久. 网上的教程五花八门,而且多数比较旧. 我尝试了各种方法都没有成功,很 ...
- 不带插件 ,自己写js,实现批量上传文件及进度显示
今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是 ...
- BeanUtils.copyProperties()方法引入不同包
两个对象之间拷贝相同的属性,可以使用BeanUtils.copyProperties()方法, BeanUtils.copyProperties(obj1,obj2); 提示有三个包可选. A,选择o ...
- zepto的使用方法
有些不了解zepto的同学在刚接触的时候肯定有很多疑惑,这个东西怎么用啊,去哪里下载啊,什么时候该用什么时候不该用啊,其实我以前也是这样的.jquery使用多了那么就让我们一起来了解下zepto把. ...
- php5.6在yum下安装gd库
yum install php-gd --enablerepo=remi,remi-php56 php.ini配置文件中增加 extension=gd.so 重启web服务器即可
- Example005控制弹出窗口居中显示
<!-- 实例005控制弹出窗口居中显示 --> <head> <meta charset="UTF-8"> </head> < ...
- 一篇文章学懂Shell脚本
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合.Shell可以直接使用在win/Unix/Linux上面, ...
- flask 上传头像
上传头像,自己感觉了好久,就是上传文件呗其实,存在一个路径,数据库存储这个路径,然后展示给前端,啥都不说,看怎么实现的. 数据库设置如下 user_image=db.Column(db.String( ...
- React文档翻译 (快速入门)
翻译自react的大部分文档,方便自己查阅. 目录 生命周期 实例化 存在期 销毁期 state Do Not Modify State Directly State Updates May Be A ...
- 一款好用的绘图软件gnuplot
漂亮的图片在一篇报告中是必不可少的.这里推荐一款绘图软件Gnuplot. Gnuplot是一种免费分发的绘图工具,可以移植到各种主流平台,无论是在Linux还是在Windows都易于安装使用.最新的版 ...