美文心理个人纠纷职场创业
创业阅读
新闻投稿
创业工作
技能技术
职场职业
社会安全
纠纷案例
幽默乐趣
个人母婴
家庭家居
心理治疗
作文范文
美文笔记
历史解密

WebStorage全解析

9月1日 飞仙轩投稿 造句
  Web应用的发展,使得客户端存储使用得也越来越多,而实现客户端存储的方式则是多种多样。最简单而且兼容性最佳的方案是Cookie,但是作为真正的客户端存储,Cookie则存在很多致命伤。此外,在IE6及以上版本中还可以使用userDataBehavior、在Firefox下可以使用globalStorage、在有Flash插件的环境中可以使用FlashLocalStorage,但是这几种方式都存在兼容性方面的局限性,因此真正使用起来并不理想。针对以上情况,HTML5中给出了更加理想的解决方案:假如你需要存储复杂的数据则可以使用WebDatabase,可以像客户端程序一样使用SQL(不过WebDatabase标准当前正陷于僵局之中,而且目前已经实现的浏览器很有限);假如你需要存储的只是简单的用keyvalue对即可解决的数据则可以使用WebStorage。本文主要从各个方面介绍一下WebStorage的具体情况。
  sessionStorage与localStorage
  WebStorage实际上由两部分组成:sessionStorage与localStorage。
  sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
  localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
  为什么选择WebStorage而不是Cookie?
  与Cookie相比,WebStorage存在不少的优势,概括为以下几点:
  1。存储空间更大:IE8下每个独立的存储空间为10M,其他浏览器实现略有不同,但都比Cookie要大很多。
  2。存储内容不会发送到服务器:当设置了Cookie后,Cookie的内容会随着请求一并发送的服务器,这对于本地存储的数据是一种带宽浪费。而WebStorage中的数据则仅仅是存在本地,不会与服务器发生任何交互。
  3。更多丰富易用的接口:WebStorage提供了一套更为丰富的接口,使得数据操作更为简便。
  4。独立的存储空间:每个域(包括子域)有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据混乱。
  兼容性如何?
  接下来的各种测试是在以下浏览器中进行的:IE8、Firefox3。6、Chrome5、Safari4、Opera10,事实证明各个浏览器在API方面的实现基本上一致,存在一定的兼容性问题,但不影响正常的使用。
  sessionStorage测试
  本节主要针对sessionStorage的一些特性进行了测试,测试的重点在于各个浏览器对于session的定义以及跨域情况。测试方法很简单:打开页面A,在页面A中写入当前的session数据,然后通过页面A中的链接或按钮使用不同的方式进入下页面B,如果页面B中能够访问到页面A中的数据则说明浏览器将当前情况的页面A、B视为同一个session。测试的具体结果如表1:
  表1sessionStorage兼容性测试
  原窗口target”blank”window。openctrlclick跨域访问
  IE8是是是是否
  Firefox3。6是是是否(null)否
  Chrome5是是是否(undefined)否
  Safari4是否是否(undefined)否
  Opera10是否否否(undefined)否
  从表1中可以看出,处于安全性考虑所有浏览器下session数据都是不允许跨域访问的,包括跨子域也是不允许的。其他方面主流浏览器中的实现较为一致。
  API测试
  方法包括以下几个:
  setItem(key,value)、removeItem(key)、getItem(key)、clear()、key(index);
  属性包括length、remainingSpace(非标准)。不过存储数据时可以简单的使用localStorage。keyvalue的方式。
  测试地址为:http:varnow。orgpageshtml5webstoragelocallocalStorage。html
  测试结果另人满意,标准中定义的接口在各个浏览器中都已实现,此外IE8下新增了一个非标准的remainingSpace属性,用于获取存储空间中剩余的空间。结果如表2:
  表2API测试
  setItemremoveItemgetItemclearkeylengthremainingSpace
  IE8是是是是是是是
  Firefox3。6是是是是是是否
  Chrome5是是是是是是否
  Safari4是是是是是是否
  Opera10是是是是是是否
  此外关于setItem(key,value)方法中的value类型,理论上可以是任意类型,不过实际上浏览器会调用value的toString方法来获取其字符串值并存储到本地,因此如果是自定义的类型则需要自己定义有意义的toString方法。
  事件
  标准的事件为onstorage,当存储空间中的数据发生变化时触发。此外,IE8中新增了一个onstoragecommit事件,当数据写入的时候触发。onstorage事件中的事件对象应该支持以下属性:
  Thekeyattributerepresentsthekeybeingchanged。
  TheoldValueattributerepresentstheoldvalueofthekeybeingchanged。
  ThenewValueattributerepresentsthenewvalueofthekeybeingchanged。
  Theurlattributerepresentstheaddressofthedocumentwhosekeychanged。
  ThestorageAreaattributerepresentstheStorageobjectthatwasaffected。
  对于这一标准的实现,webkit内核的浏览器(Chrome、Safari)以及Opera是完全遵循标准的,IE8则只实现了url,Firefox下则均未实现。
  测试地址为:http:varnow。orgpageshtml5webstoragelocalevent。html
  具体结果见表3。
  表3onStorage事件对象属性测试
  keyoldValuenewValueurlstorageArea
  IE8无无无有无
  Firefox3。6无无无无无
  Chrome5有有有有有
  Safari4有有有有有
  Opera10有有有有有
  此外,不同的浏览器事件注册的方式以及对象也不一致,具体如表4。
  表4onStorage事件注册对象
  事件注册对象备注
  IE8document
  Firefox3。6document必须使用document。addEventListener注册,否则无效。
  Chrome5window
  Safari4body
  Opera10window
  缺陷与不足
  WebStorage的缺陷主要集中在其安全性方面,具体体现在以下两点:
  1。浏览器会为每个域分配独立的存储空间,即脚本在域A中是无法访问到域B中的存储空间的,但是浏览器却不会检查脚本所在的域与当前域是否相同。即在域B中嵌入域A中的脚本依然可以访问域B中的数据。测试地址:http:varnow。orgpageshtml5webstoragelocalcorssdomainjsaccess。html
  2。存储在本地的数据未加密而且永远不会过期,极易造成隐私泄漏。也许需要像保存密码一样询问用户是在用私人电脑还是公共电脑来决定是否将数据保存在本地。
  跨页面通讯示例
  示例地址:http:varnow。orgpageshtml5webstorageappplay。html
评论 转载

造句:全解
造句:全解析
认识1。0产品,理解2。0服务也许和你一样,我每天使用的服务也只有很少的几个,Gmail,Flickr,微博,Google阅读器,豆瓣,淘宝。当2。0的产品完全和生活融入一起的时候,才发现在这些产品中迸发的……可用性设计还是交互设计:谁该做什么最近总有人问我关于数字设计社区的显而易见的困惑:谁改做什么。我主要讲的是可用性和用户体验,因为我认为这是对于用户问题(使用产品、系统和服务的所有的体验)的最好的概括。然而……产品经理怎么和美工打交道美工好不好?产品经理和美工是否match?也是一个值得考虑的问题。美工这个称呼有点俗,好像很多公司都这么叫的。因为不管是网页、还是软件,第一呈现给用户的便是视觉。所以可以……交互设计中的视觉结构网站的交互设计分2种:流程交互和界面交互(即”单页面交互”或“小交互”),而界面交互又包含2类:“视觉结构”和“动态模块”。何谓动态模块?简单的说就是“AJAX”,它有几……WebStorage全解析Web应用的发展,使得客户端存储使用得也越来越多,而实现客户端存储的方式则是多种多样。最简单而且兼容性最佳的方案是Cookie,但是作为真正的客户端存储,Cookie则存在很多……拒绝庸俗UXUI在一次声称会是一个关于UX呈现的产品演示中,我却没有得到邀请。在许多示例时,开发者演示新UI控件、技术、代码并自称谈论用户体验。我要说,停止庸俗,了解事实。原谅我父亲,因……给网站布置一个明晰的“关于”页面所有网站,无论是官方、电子商务、社会化网络还是个人站点,都应该布置一个恰到好处的“关于”页面,直截了当地告诉到访者,为什么要浪费他们宝贵的时间浏览你的网站。一、为什么要有……可用性在于细节虽然可用性从业人员喜欢炫耀他们在网站和应用程序方面的可用性研究的例子,但绝大多数的可用性问题通常在细节。迫使你的应用程序用户或网站访客不断被更多细节上的可用性问题困扰,你最终会……智能手机软件设计的人性化和严谨性注意:本文未经勘误,可能包含少量错别字如果说到智能手机,iPhone和Nokia是两个不得不提的家伙,iPhone正在全球如日中天吞噬智能手机的市场份额,而Nokia这个……白鸦:我心目中的”产品中心”自从说了“不应该有“用户体验设计”这个说法之后”(链接),又看到不少人在讨论产品经理、交互设计、用户体验这些分工之间的协作问题。刚好,前些天帮某中小型公司提了个“产品中心”的配……解读iPhone平台的一些优秀设计思路本文试图从iPhone的角度结合一些iPhone平台项目的设计经验提炼出iPhone平台的一些优秀设计思路,以供大家在做移动互联网设备设计时参考。1、移动互联网设备和传统……感性设计在韩国浅谈韩国地图服务的人性化和个性化背景韩国是一个奇特的市场,苹果宣称在韩国境内只有不足20的市场份额,Google的市场份额也只有10左右。然而与日本相比,韩国的产品没有技术优势;与中国相比,又没有价格优……
【人人译客】留白与行宽是如何影响用户阅读的?从头带你认识面包屑导航的前世今生!最抢眼的6个方法!如何让交互过程变得惊喜有趣?(下)最抢眼的6个方法!如何让交互过程变得惊喜有趣?(上)人物肖像图片背景的网页设计欣赏颜色如何从5个方面影响我们的情绪?新手留意中枪!说说设计师最常见的11个设计误区秋高气爽,云也开始有遐想Web设计主题:创建一个古典风格的网站点靓网页的10种导航菜单设计90后分析:在线旅游三足鼎立为网页文字的可读性而设计
公主嫁给猛将后却不让他碰自己,唐太宗送来把刀,公主立马被宠幸太保街(由词目及其释义等构成的中文知识性百科条目)妖魅公子(由词目及其释义等构成的中文知识性百科条目)初中同学聚会的邀请函阳康后如何调理身体?医生这三个药膳助你恢复健康!犯太岁(由词目及其释义等构成的中文知识性百科条目)纪梵希散粉和lauramercier罗拉散粉哪个好唐伯虎别人笑我太疯癫,我笑他人看不穿十分钟带你快速学习产品基础必备技能北京市社保稽核内容衡庐精舍藏稿(九)教研组工作计划
©2025网站地图最近更新文明上网我要投诉