本地存储方式比较

由于最近有项工作要用到本地存储方式来存储用户的一些信息,所以花了点时间搜集了一下现有的一些本地存储方式,并做了一些比较,在这里做个记录,以后遇到类似的问题,要用什么方法心中也多少有个数。

目前已有的本地存储方式:

一、传统的:

1.        Cookie:各浏览器都基本支持,可控制生命周期,但缺点是有大小限制,1个cookie最多存储4096±1B(大约为4KB)大小的数据,一个域名下最多存储20个cookie;而且有可能会被客户端禁用掉。

2.        UserData:可控生命周期,切存储容量得到扩充,单个文件大小为128KB,一个域名下可存储1024KB的文件,缺点是只能在windows+IE 环境。

3.        Flash:大小得到扩充,且各个浏览器都支持,但是需要在用的地方都引入.swf文件和大量的js,比较繁琐。

 

二、Html5给出的:共同缺点是低端版本的浏览器会不支持,且浏览器实现方式会有差异

1.        Web Storage:

1)        localStorage:大小得到扩充,大多数桌面浏览器会设置每个来源5MB的限制,chrome和Safari对每个来源的限制是2.5MB,iOS的Safari和Android的WebKit的限制也是2.5MB,不受窗口的影响。缺点是一经初始化后就长期存储在本地,不受会话长短的影响,若想删除必须得手动清理。

2)        sessionStorage:大小得到扩充,对sessionStorage的大小限制因浏览器而异,有的浏览器对其没有大小限制,但chrome、Safari、iOS版的Safari和Android版的WebKit有限制,大小也是2.5MB,IE8+和Opera对其限制是5MB。生命周期为一个会话周期,即从打开到关闭浏览器窗口,当然,必须是在线用户。必须是同一窗口,不同窗口之间的sessionStorage是不同的。

2.        GlobalStorage:

在浏览器关闭以后,使用globalStorage存储的信息仍能够保留下来,和sessionStorage一样,同一域中任何一个页面存储的信息都能被所有的页面共享。缺点是目前只有FF支持,且只支持当前域下的globalStorage存储。

3.        IndexedDB:

支持保存结构化的数据,与Mysql和web SQL database等数据库类似,不过其最大特色是使用对象保存数据而不是用表保存。

 

条件:

1.        在本项目中,登录后利用接口得到的用户信息会有一个过期时间,过了那个时间后用户想进行其他操作必须重新登录。

2.        使用环境为移动端,都支持html5的Web Storage 存储,当然也支持cookie。

3.        要考虑以后的发展。

 

兼容性方面,userData和globalStorage不满足要求;flash过于麻烦,而且还要浏览器有相应扩展;只在本地存储单个用户的数据,不必用到indexed DB;localStorage不能够自动清除,在这里不需要持久化保存数据,假设一个设备有另一个人使用,在这里就会有问题。只剩下sessionStorage和cookie:

Cookie:能够根据服务器端设置的用户信息有效时间来设置其自身的存在时间;有被禁用的可能,但是与服务器的对话的session ID通常情况下依赖于cookie,若要考虑禁用cookie,那很多策略都要修改,且使用环境为移动端,禁用可行性更低。

SessionStorage:基本没有被禁用的风险,但是在一个会话周期内它都有效,假如服务端数据已经过期,但是本地窗口并未关闭,仍然能使用sessionStorage,但是这问题也并不大,因为本来保存的就是该用户已有体系中的数据,就算重新从服务端获取也还是这些。


考虑到未来的发展,各浏览器厂商对html5的支持越来越好,最后我还是采用了sessionStorage。

本地存储是指将数据保存在用户设备的存储介质上,以便在需要时可以读取和使用。常见的三种本地存储方式包括: 1. Cookies:Cookies 是最常见的本地存储方式之一。它是由服务器发送给浏览器的小型文本文件,存储在用户设备上。Cookies 可以用于存储用户的身份认证信息、个性化设置、购物车内容等。它的主要特点是易于使用和跨浏览器支持,但存储容量有限(通常不超过4KB),且只能存储字符串格式的数据。 2. Web Storage(Web 存储):Web Storage 是 HTML5 引入的一种本地存储方式,包括 sessionStorage 和 localStorage 两种。sessionStorage 用于在单个会话期间保存数据,而 localStorage 则可以长期保存数据Web Storage 可以存储更大量的数据(通常至少5MB),并且可以存储键值对形式的数据,支持存储字符串和复杂对象等。 3. IndexedDB:IndexedDB 是一种高级的本地数据库,可以在浏览器中保存结构化数据。它提供了更强大的查询和索引功能,支持事务和批处理操作,适合存储大量、复杂的数据。IndexedDB 的使用相对较复杂,需要编写异步代码来操作数据库,但它提供了更大的灵活性和性能。 总的来说,Cookies 适合存储小型数据和简单的键值对;Web Storage 提供了更大的存储容量和更灵活的数据存储方式;IndexedDB 则适用于需要高级数据库功能和处理大规模数据的场景。选择合适的本地存储方式取决于具体需求和应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值