Web 数据存储总结

随着Web应用程序的出现,也产生了对于能够在客户端上存储用户信息能力的要求。这个问题的第一个解决方案是以cookie形似出现的。网景公司在一份名为“Persistent Client State: HTTP Cookies”的标准中对cookie机制进行了阐述。

cookie限制:

  1. 每个域的cookie个数是有限的,ie7之后是每个域30个,firefox是50个,chrome和safari没有限制
  2. 当超过单个域名cookie限制后,还要设置cookie,浏览器就会清除前的cookie;ie和opera会删除最近最少使用过的cookie;firefox的删除并没有规律
  3. 单个cookie的容量也有限制,每个至多4kb,超过4kb这个cookie会无声消失掉。

cookie的构成:

  • 名称:一个唯一确定cookie的名称。cookie的名称必须是经过url编码的
  • 值:存储在cookie中字符串值。值必须被url编码
  • 域:cookie对于哪个域是有效的。所有向该域发送的请求都会包含这个cookie信息。这个值可以包含子域:www.wrox.com也可以不包含子域:.wrox.com
  • 路径:指定对于域中的那个路径,应该向服务器发送cookie。
  • 失效时间:表示cookie何时应该被删除的时间戳。默认情况下,浏览器回话结束时即将所有cookie删除;如果设置过期时间,cookie可在浏览器关闭后依然保存在用户的机器上。
  • 安全标志:指定后,cookie只有在使用SSL连接的时候才能发送到服务器。

尤其注意:域、路径、失效时间和secure标志都是服务器给浏览器的指示,以指定何时应该发送cookie。这些参数并不会作为发送到服务器的cookie信息的一部分,只有名值对才会被发送。

 

document.cookie浏览器提供的用来访问和设置cookie。这个属性的特殊之处在于因为使用它的方式不同而表现出不同的行为:

  • 当用来获取属性时,document.cookie返回当前页面可用的(根据域、路径、失效时间和安全设置)所有cookie的字符串,一系列由分号隔开的键值对:"nam1=value1;name2=value2;name3=value3"注意最后没有分号
  • 当用于设置值的时候,document.cookie属性可以设置为一个新的cookie字符串。这个cookie字符串会被解释并添加到现有的cookie集合中。除非cookie名已经存在,否则设置document.cookie并不会覆盖cookie。:document.cookie=encodeURIComponent(name) + "=" + encodeURIComponent(value) + "; domain=.wrox.com; path=/";

WebStorage

webStorage的目的是克服由cookie带来的一些限制,当数据需要被严格控制在客户端上时,无需持续地将数据发回服务器。Web Storage的两个主要目的:

  • 提供一种在cookie之外存储会话数据的途径;
  • 提供一种存储大量可以跨会话存在的数据的机制;

Storage类型

Storage类型提供最大的存储空间来存储键值对儿。Storage的实例主要常用以下方法:

  • getItem(name):根据指定的名字name获取对应的值
  • removeItem(name):删除由name指定的键值对儿
  • setItem(name):位指定的name设置一个对应值

还可以使用length属性来判断有多少键值对存放在Storage对象中。

 

localStorage对象

要访问同一个localStorage对象,页面必须来自同一个域(子域名无效),使用同一协议,在同一窗口上。

存储在localStorage中的数据保留到通过JavaScript删除或者是用户清除浏览器缓存。

storage事件

对storage对象进行任何修改,都会在文档上触发storage事件。

document.addEventListener('storage', function(evt){});

 

大多数桌面浏览器对localStorage的限制都是5MB,chrome和safari对其限制是2.5mb。

时间: 2025-01-01 08:03:19

Web 数据存储总结的相关文章

浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase

Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态,保证客户浏览器和服务器通讯时可以知道客户浏览器当前的状态.Cookie就是记录这个状态的容器,Cookie在每次请求的时候都被带回到服务器,从而保证了Server可以知道浏览器当前的状态,由于Cookie会被带回到Server,所以Cookie的内容不能存太多,最多不能超过4K,4K 限制的介绍 h

嵌入式web服务器数据存储

问题描述 嵌入式web服务器数据存储 如题,嵌入式web服务器的数据存储方式,还有就是类似于路由器设备,其登陆 界面的数据存储,是存入数据库,还是文件存储呢,存数据库是哪种数据库,文件是什么格式 解决方案 根据硬件条件和需求选择,简单数据可以存储为文件,或自定义格式,嵌入式数据库的话通常用SQLLITE

cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)

基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.Value:cookie名称对应的值: 3.Domain:设置cookie作用域.默认是当前web服务器的主机名.设置该属性可使大型网站子域之间共享cookie,不过只能设置为当前服务器的域. 举个栗子:order.example.com域下的服务器想读取catalog/example.com域下设置

web service 数据存储时,不依赖数据库软件的平台,可以用一个类似数据库文件来存储吗,就像QQ一样,存储数据时用的是后缀为.db的文件,那是什么技术啊,

问题描述 webservice数据存储时,不依赖数据库软件的平台,可以用一个类似数据库文件来存储吗,就像QQ一样,存储数据时用的是后缀为.db的文件,那是什么技术啊,谁能帮一下啊,谢谢了.

使用XML进行数据存储与备份的实现(1)

xml|备份|数据 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  XML(eXtensible Markup Language,可扩展标记语言)作为一种数据标记语言正在不断引起人们的关注,XML的可扩展性已经受到了越来越多的人的关注,特别是在跨平台的数据交换当中,XML技术的运用可以轻松的解决这个问题.越来越多的企业宣布将在他们的产品中增加对XML的支持,Micro

使用XML进行数据存储与备份的实现(2)

xml|备份|数据 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  $fields=mysql_list_fields("embed",$table,$con);$j=0;//$num_fields=mysql_field_name($fields,$j);//echo $num_fields;while ($j<mysql_num_fiel

连接到数据存储

数据     如果需要访问一个数据存储,应该创建一个到数据存储的连接.前面已经提到过:可以显式地创建一个Connection对象,或者让ADO隐含地创建一个连接.对于任何一种方式,都必须知道数据存储的详细内容.       虽然用于连接的实际细节不尽相同,但对于所有类型的数据存储,其连接的实际方法是相同的.这并不令人惊奇,因为不同的提供者需要不同类型的信息.在允许用户访问数据存储之前,一些提供者需要用户的证书,而别的提供者却接受默认的安全证书.       连接到数据源有好几种方法:      

localForage帮你实现Web离线存储

Web 应用程序有离线功能,如保存大量数据集和二进制文件.你甚至可以做缓存 MP3 文件这样的事情.浏览器技术可以保存离线数据和大量的储存.但问题是,如何选择合适技术,如何方便灵活的实现. 如果你需要开发一个支持离线存储的 Web 应用程序,不知道从哪里开始,那么这篇文章正是你需要的. localStorage 能够让你实现基本的数据存储,但它的速度慢,而且不能处理二进制数据.IndexedDB 和 WebSQL 是异步的,速度快,支持大数据集,但他们的API 使用起来有点复杂.不仅如此,Ind

MetaModel:跨多种数据存储提供统一的数据访问

最近,Human Inference和Apache软件基金会(ASF)分别宣布了捐赠与接受MetaModel项目的消息, 今后MetaModel将成为一个Apache孵化器项目.此前,MetaModel遵循LGPL许可证,由Human Inference的 产品开发团队管理,但现在已经转移到了ASF上,将遵循新的许可证.拥有新的社区.接受新的管理.那 么这个项目到底是什么呢?它又有哪些用途? MetaModel是一个Java类库,设计它的目的是提供 一个可以与任何数据存储(不论是关系型数据库.N