前端存储的介绍和对比
来源:互联网 发布:软件开发项目管理 pdf 编辑:程序博客网 时间:2024/06/07 05:43
前端开发的时候,因为功能需求,有些数据需要持久化的存储。这就涉及到了前端的数据存储。接下来我介绍一下自己用过的两种前端存储方式,对他们的使用方式也做一下简单的归纳。
cookie的使用
cookie是浏览器本地存储的一小段文本信息。文本长度限制大约是4k。也是大部分人常用的前端存储方式。每次前端请求服务端时,都会在request请求上带上cookie,将其传至服务端。
cookie以下面的形式存在: document.cookie="cookieName=cookieValue;expires='Sat, 11 Nov 2017 07:20:22 GMT';path='/'";
- cookieName:该cookie的名称,cookieValue:该cookie的值。
- expires:cookie的过期时间。是一个具体的时间点,到了该时间后,系统会自动回收cookie。如果不写,系统默认浏览器关闭时回收。
- path:cookie有效的作用域,在该目录下cookie有效。如果不写,默认当前网站根目录有效。
在前端我们可以用js对cookie进行增删改的操作,下面是我封装的使用cookie的方法:
var CookieUtil = { /** * 设置cookie * @param name cookie的名称 * @param value cookie的值 * @param time cookie过多长时间过期,单位是毫秒 * @param path cookie的有效区域,根目录是"/"或者不传参 */ setCookie : function(name, value, time, path) { var cookieStr = ""; /** * 字符需要进行URI编码,防止一些特殊的字符影响传输。 * 取值得时候要响应的解码 */ cookieStr += (name + "=" + encodeURIComponent(value) + ";"); if (time) { var outDate = new Date(); outDate.setTime(new Date().getTime()+time); /** * 时间需要转换成GMT格式时间 */ cookieStr += ("expires = " + outDate.toUTCString() + ";"); } if (path) { cookieStr += ("path = " + path + ";") } document.cookie = cookieStr; }, /** * 获取cookie的值 * @param name cookie的名称 * @returns {*} 返回cookie的值 */ getCookie : function(name) { var cookieStr = document.cookie; var cookiePairs = cookieStr.split(";"); for (var i = 0; i < cookiePairs.length; i++) { var index; if ( index = cookiePairs[i].indexOf(name) >= 0) { var cookieValue = cookiePairs[i].substring(index + name.length + 1) /** * 结果需要URI解码,存储的时候根据URL进行过编码 */ return decodeURIComponent(cookieValue); } } return null; }, /** * 删除cookie,重新设置cookie过期时间为过去时间,系统自动删除 * @param name cookie的名称 */ deleteCookie : function(name) { this.setCookie(name, null, -1, null); }};
locaStorage 和 sessionStorage的使用
locaStorage 和 sessionStorage都是h5提供的浏览器本地存储数据的方式。
localStorage:数据在当前页面所属的整个站点都有效。存储时长没有限制,除非主动删除数据才会消失(调用removeItem, clear API,或者清除浏览器缓存数据等)。
sessionStorage:数据只在当前session有效。即只当前浏览器的tab页内有效。随着浏览器的关闭数据消失。
对比cookie,它们具有如下特点:
- 存储量大,每一个站点提供至少5M的存储。
- 数据不会跟随http请求发送到server端。
由于是h5提供的存储方式,使用该特性对于浏览器版本有要求,支持该存储的浏览器版本如下:
- Chrome : 4.0
- IE : 8.0
- Firefox : 3.5
- Safari : 4.0
- Opera : 11.5
判断浏览器是否支持该特性可以通过一下方式:
if (typeof(window.sessionStorage) != undefined) { console.log("浏览器支持sessionStorage");}
localStorage和sessionStorage提供的API相同并且非常简单:
- 增加数据,原来有数据会被覆盖:setItem(key, value);
- 获取数据:getItem(key);
- 删除指定数据:removeItem(key);
- 删除全部数据:clear();
要注意的是,两者存储的都是文本信息,如果是js对象,可以使用JSON.stringify()转为字符串。取值的时候使用JSON.parse()将字符串转为js对象。
以下是sessionStorage使用示例代码:
/** * 通过以下方式判断浏览器是否支持storage */if (typeof(window.sessionStorage) != undefined) { console.log("浏览器支持sessionStorage"); var person = { name: "markfengfeng", sex: "男" }; /** * 存储数据,指定key和value。js对象需要转为字符串 */ window.sessionStorage.setItem("person", JSON.stringify(person)); /** * 获取数据 */ var storagePerson = JSON.parse(window.sessionStorage.getItem("person")); /** * 根据key移除指定的数据 */ window.sessionStorage.removeItem("person"); /** * 删除所有数据 */ window.sessionStorage.clear();}
- 前端存储的介绍和对比
- 前端若干模板介绍对比
- 当下的前端框架和未来前端框架对比
- MYSQL几种存储引擎介绍和对比
- 数据结构存储的顺序和链式对比
- 数据结构存储的顺序和链式对比
- 数据结构存储的顺序和链式对比
- 存储引擎的对比和适用场景
- SLP的基本介绍和对比分析
- 浏览器的内核介绍和对比
- KV存储的对比
- KV存储的对比
- Mysql存储引擎InnoDB和MyISAM的区别对比
- MySQL数据库存储引擎MyISAM和InnoDB的详解对比
- MySQL数据库存储引擎MyISAM和InnoDB的对比详解
- MySQL数据库存储引擎MyISAM和InnoDB的对比详解
- hive存储格式sequencefile和rcfile的对比
- hive存储格式sequencefile和rcfile的对比
- 十六进制输入输出及加减
- DOM
- OOD(object oriented design)
- session过期、失效时间
- python: isinstance函数
- 前端存储的介绍和对比
- 1.欢迎学习机器学习(machine learning)
- Stanford NER模型使用,训练自己的NER模型,终端使用和java调用
- http协议以及几种常见的状态码
- STL学习笔记——2.stack
- Numpy学习笔记
- Django-restframework25 Pagination(分页)
- loongson2f_灵珑9S2A一体机原共创系统下备份设备驱动模块
- Reinforcement Learning:An introduction读书笔记-Chapter 2