摘要:存储之初探的发布和定稿为前端界带来巨大的变化,新增的和特性给业务带来了更多可能性,让用户体验拥有了更可能的丰富。只读返回一个整数,表示存储在对象中的数据项数量。会在过期时间之后销毁。安全性方面,中一般不建议存储敏感信息。
Web存储之LocalStorage初探
HTML5的发布和定稿为前端界带来巨大的变化,新增的API和特性给业务带来了更多可能性,让用户体验拥有了更可能的丰富。
· HTML Geolocation 可以定位到用户的地理位置
· HTML Drag and Drop 拖拽API,可以实现更简单有效的交互方式
· HTML Local Storage 本地存储方案, 配合离线缓存可以实现WebApp的本地化
· HTML Application Cache 离线缓存,可以将WebApp离线到本地使用
· HTML Web Workers JS版多线程,适合一些计算密集型的业务
· HTML SSE Server-sent Event 服务器推送技术,可以把主动权交给服务器端,往客户端主动推送数据、消息
· HTML Canvas/WebGL HTML图像处理API,能够实现更绚烂和丰富的效果
· HTML Audio/Video HTML音视频API,能够更方便处理音视频
今天,我就来简单介绍一下LocalStorage 这个本地存储。
首先来看一下 关于 Storage 的API。
Storage.length 只读
返回一个整数,表示存储在 Storage 对象中的数据项数量。
Storage.key()
该方法接受一个数值 n 作为参数,并返回存储中的第 n 个键名。
Storage.getItem()
该方法接受一个键名作为参数,返回键名对应的值。
Storage.setItem()
该方法接受一个键名和值作为参数,将会把键值对添加到存储中,如果键名存在,则更新其对应的值。
Storage.removeItem()
该方法接受一个键名作为参数,并把该键名从存储中删除。
Storage.clear()
调用该方法会清空存储中的所有键名。
LocalStorage 和 SessionStorage 共同实现了这些API,可以看到API非常简单,只有5个API函数和一个只读的length属性,我们先看一下LocalStorage 的 DEMO,里面示范了除了key() 函数之外的API。
rLVvMN
可以看到,storage 的API用例还是很简单的。
还有一个storage 的 Event事件,在LocalStorage 和 sessionStorage 变更的时候会触发一个Storage 的事件,但是只能在同源策略下触发,并且在当前窗口是不能触发的。也就是说在同一个浏览器中,A标签页变更Storage,B标签页会触发这个事件,在A里面是不行的,同时不在同一个浏览器里面也是无法触发的。
Storage事件的属性如下:
target Read only EventTarget The event target (the topmost target in the DOM tree). type Read only DOMString The type of event. bubbles Read only boolean Does the event normally bubble? cancelable Read only boolean Is it possible to cancel the event? key Read only DOMString (string) The key being changed. oldValue Read only DOMString (string) The old value of the key being changed. newValue Read only DOMString (string) The new value of the key being changed. url Read only DOMString (string) The address of the document whose key changed. storageArea Read only Storage The Storage object that was affected.
无论是LocalStorage 、sessionStorage 还是cookie 都有各自的优劣,下表我们来列举一下他们的对比情况。
特性 | Cookie | localStorage | sessionStorage |
---|---|---|---|
数据的生命期 | 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效 | 除非被清除,否则永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
存放数据大小 | 4K左右 | 一般为5MB | |
与服务器端通信 | 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 | |
易用性 | 需要程序员自己封装,源生的Cookie接口不友好 | 源生接口可以接受,亦可再次封装来对Object和Array有更好的支持 |
当然还有以下情况:
cookie由服务端生成,用于标识用户身份;而两个storage用于浏览器端缓存数据
三者都是键值对的集
cookie的话,会随http请求一起发送到服务器;而两个storage可以由脚本选择性的提交
会话的storage会在会话结束后销毁;而localStorage会一直存在直到手动销毁。cookie会在过期时间之后销毁。
安全性方面,cookie中一般不建议存储敏感信息。两个storage的数据提交后在服务端一定要校验(其实任何payload和qs里的参数都要校验)。
目前,对于LocalStorage的介绍大概就到此为止了,可能有某些错误的地方,也可能有些不准确的地方,欢迎各位指出斧正。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/86312.html
背景 随着前端技术日新月异地快速发展,web应用功能和体验也逐渐发展到可以和原生应用媲美的程度,前端缓存技术的应用对这起到了不可磨灭的贡献,因此想一探前端的缓存技术,这篇文章主要会介绍在日常开发中比较少接触的IndexedDB IndexedDB 什么是IndexedDB IndexedDB简单理解就是前端数据库,提供了一种在用户浏览器中持久存储数据的方法,但是和前端关系型数据不同的是,Index...
摘要:学完的基础语法之后,练手一下,从最基本的留言板开刀吧。功能不多,主要为了熟悉的基础语法使用。 学完vue的基础语法之后,练手一下,从最基本的留言板开刀吧。功能不多,主要为了熟悉vue的基础语法使用。详细vue教程请移步vue.js 2.0 技术框架 1.vue.js 2.0 2.bootstrap 语法概述 这里只写一点此例子用到的一些语法知识,详细API请移步:vue 2.0 a...
阅读 2291·2021-11-23 09:51
阅读 5685·2021-09-22 15:39
阅读 3356·2021-09-02 15:15
阅读 3506·2019-08-30 15:54
阅读 2366·2019-08-30 15:53
阅读 1407·2019-08-30 14:04
阅读 2461·2019-08-29 18:33
阅读 2381·2019-08-29 13:08