HTML5WebStorageAPI.NET会话机制探索
摘要:html5 webstorage api 能很方便地在web请求之间持久化数据,开发者可以将需要跨请求重复访问的数据直接存储在客户端的浏览器中,还可以在关闭浏览器很久后再次打开时恢复数据,以减小网络流量。通过比较的会话机制与html5 webstorage api,探索两者在web客户端的应用。
关键词:webstorage;离线缓存;会话;session
中图分类号:tp393 文献标识码:a 文章编号:1009-3044201309-2102-03
html5近十年来发展迅猛,在html 5平台上,视频,音频,图像,动画,以及同电脑的交互都被标准化。html5功能越来越丰富,支持图片上传拖拽、支持localstorage、支持web sql database、支持文件存储api等等。在pcweb开发过程中,的会话机制在各方面都表现很好,然而在基于智能移动终端的开发过程中, html5web localstorage有着极大的优势,下面主要从html5 webstorage api的基本原理和操作方法入手,比较的对话机制,以手机招生信息网的用户缓存进行分析,如何使用用户服务更省流量,更快捷地访问页面。
1 html5 webstorage api概述
html5之前,各种浏览器都能很好的支持cookie,因为可以直接使用js就可以调用,使用很方便。但是cookie本身就不是很完善,主要表现在二个方面:一是存储大小受限,一个cookie大小大概在4kb左右,又有访问时间的限制,这就不能接受你文件或邮件那样的大文件了,因此用户在使用的过程中就很大的不便。二是安全的问题,因为用户请求页面的时候,cookie就要在服务器和浏览器之间来回传送,cookie都会被附加在每个http请求的header中,增加用户流量,况且传递的过程中是使用明文,用户的信息容易受到跨站的脚本攻击,如果没有对信息加密,只需要在链接地址后面加上“?cookie=document. cookie”便可以获取用户的cookie信息,用户数据就存很大的威胁。
html5 web storage(也称为domstorage api的出现能很好的解决这个问题,web storage api 是用javascript来保存对象,在页面中加载时读取和保存数据都比较容易,开发者可以为应用创建本地存储,由于存储的数据不在网络上传输,重新启动浏览器时更加容易获取,而且可以保存5m左右的数据,又能长期保存。这样极大的便解决了之前只能用cookie来存储数据的容量小、存取不便、容易被清除的问题,这个功能为客户端提供了极大的灵活性,并能快速地读取到数据,减少了用户等待和数据流量。
2 html5 webstorage api的使用
2.1 检查浏览器的支持性
目前有部分浏览器不能支持html5,因些在使用之前,需要检查浏览器是否支持web storage api ,去检查window. localstoragewindow.sessionstorage是否存在,实际操作过程中,使用如下程序可以检查浏览器是否支持web storage
通过测试,目前主流浏览器都支持web storage,基本支持html5的都能很好的支持,浏览器支持情况如表1所示。
2.2 localstoragesession storage的区别
html5 webstorage api 能支持离线缓存,主要是提供了两种存储类型api接口:sessionstoragelocalstorage。其中localstorage 作为html5本地存储webstorage特性的api之一,主要作用时将数据保存在客户端中,在安全性方面,localstorage是域内安全的,即localstorage是基于域的,任何在该域内的所有页面,都可以访问localstorage数据。 sessionstorage主要是将数据保存到会话中, 它的存储的生命周期只保存在存储它的当前窗
口或由当前窗口新建的新窗口,直到相关联的标签页。sessionstorage的生命周期在会话期间内有效,而localstorage就存储在本地,并且数据是永久的,除非用户或程序对其执行删除操作。
2.3 html5 webstorage api数据的获取
html5sessionstorage和localstorage中,可以定义web storageapi,通过window对象来获取他们,程序如下:
从规范定义的接口来看,接口数量并不多,只有length是属性,其余都是方法。其中setitemgetitem互为以对get/setremoveitem方法的主要作用是删除一个键值对。clear的作用是删除所有的键值对。
3 对应的会话机制
html5开发过程中,我们经常会遇到这样的问题,当信息系统中需要禁止重复登陆的功能,通常做法是在数据库中建一个记录当前使用人员的表,在用户身份验证完成后对照该表,如果用户存在在这个表中,按具体需求可以实现禁止当前用户登陆,或强制先前用户注销。如果用户不存在在这个表中,将用户信息保存到该表,在用户退出,或者session结束时
清除表中数据。但是,我们经常会遇到这样的问题:如果采用禁止当前用户登陆的方法,当用户出现意外关闭,用户如何删除掉已登录的记录,如果不删除,下次该用户就无法登录了。在的会话机制中,为了减少这个问题的发生,常常使用所提供的三种会话状态存储机制。一种进程内模式(问题模式),会话状态存储在进程内;两种进程外模式:状态机模式,会话状态村处于网络状态服务器;sql server模式,会话状态存储于sql server中。
4 html5 webstorage api构建与对应的会话机制
4.1 session会话机制
当我们的html5客户端应用程序要与的后台程序对接上的时候,就要构建与之对应的会话机制,这样才能达成一致的操作。下面以做一个测试,在项目中使用visual stdio创建两个.aspx页面,其中一个为no1.aspx,另一个为no2.aspx,在设计过程中使用同一个session,用session[name]表示。测试结果如下在one页面保存session[name]的值为hyfu,如图1所示, two页面中显示也是hyfu,结果如图2所示:
从上面的运行结果可以看出,在session会话机制中,它是由服务器端创建的,并且在
客户访问时会把session信息放到http头中发送出去的,在服务端由于已经保存了session的相关信息,所以在下一次访问时,session的值会传送到客户端,保存用户信息。
4.2 webstorage处理会话机制
在离线系统的设计中,我们经常采用localstorage处理机制,因为它的数据的生命周期比窗口或浏览器的生命周期长,在页面中一般的js对象或数据的生存期是仅在当前页面有效,因此刷新页面或转到另一页面这样的重新加载页面的情况,数据就不存在了。而webstorage 只要同源的同窗口(或tab)中,刷新页面或进入同源的不同页面,数据始终存在。也就是说只要这个浏览器窗口没有关闭,加载新页面或重新加载,数据仍然存在,所以在页面设计中,我们采用localstorage记录会话机制,例如使用:window.localstorage.setitemsessionmechanism username); 实现记录用户登录信息,使用storage事件监听会话的变化。例如使用window.addeventlistenerstorage checkstorageevent true);语句,则在表单页面设置事件的监听。下面我们以手机招生信息网为例进行分析,首先我们设计一个用户登录页面,在页面中写入“window.localstorage.setitemsessionusename username);”保存用户信息,我们在程序中设置localstorage监听事件,如当输入用户信息
时,运行结果如图3所示,当输入正确的信息,点击登录则进入用户详细信息页面,效果如图4所示。
当用户在当面窗口重新输入别的用户名和密码时,系统会弹出提示信息,并跳转到登录的界面,这样就保证了一个同源浏览器只有一个用户在执行操作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。