Web持久化存储Web SQL、Local Storage、Cookies(常用)

在浏览器客户端记录一些信息,有三种常用的Web数据持久化存储的方式,分别是Web SQL、Local Storage、Cookies。

Web SQL

作为html5本地数据库,可通过一套API来操纵客户端的数据库(关系数据库),下面是支持浏览器情况。

鉴于PC浏览器支持情况,我找了淘宝、京东、携程、起点、优酷网站,并没有用Web SQL记录客户端信息。在移动端比较适用,特别是对于Hybrid应用,更是得心应手。

接口:

openDatabase

transaction

executeSql

1.打开连接并创建数据库

var dataBase = openDatabase("student", "1.0", "学生表", 1024 * 1024, function () { });

2.创建数据表

dataBase.transaction( function(tx) {
    tx.executeSql(
    "create table if not exists stu (id REAL UNIQUE, name TEXT)",
    [],
    function(tx,result){ alert('创建stu表成功'); },
    function(tx, error){
        alert('创建stu表失败:' + error.message);

    });
});    

3.添加数据

dataBase.transaction(function (tx) {
    tx.executeSql(
    "insert into stu (id, name) values(?, ?)",
    [1, '徐明祥'],
    function () { alert('添加数据成功'); },
    function (tx, error) {
        alert('添加数据失败: ' + error.message);
    });
});

4.查询数据

dataBase.transaction(function (tx) {
    tx.executeSql(
    "select * from stu", [],
    function (tx, result) { //执行成功的回调函数
        //在这里对result 做你想要做的事情吧...........
    },
    function (tx, error) {
        alert('查询失败: ' + error.message)
    });
});

特点:

1.有事务

2.查询数据,返回数据类型正确

3.被W3C丢弃的规范,但被广泛支持。

Local Storage

HTML5提供了没有时间限制在客户端存储数据的手段,以键值对存取,网站只能访问其自身的数据,浏览器支持如下。

PS:截图来自网上资料

有个比较有趣的东西,我在起点、京东、优酷的localStorage找个共同的变量,就是jw_bl,里面的数据是(我猜不到这个属性是什么简写的):

{"created" : "Sat Nov 14 2015 23:52:10 GMT+0800 (中国标准时间)" , "expiration" : "Sat, 21 Nov 2015 10:51:54 -0500" , "reason" : "0"}

写数据:

localStorage.pagecount=123;

读数据:

localStorage.pagecount;  // return "123"

PS:要注意的是,获取localStorage的值是字符串,不管你赋值的是什么类型。

特点:

1. 获取值是字符串类型

2. 容量有大约5M限制

3. 不会进行网络传输

Cookies

Cookies是最常用的Web数据持久化手段,所有浏览器都支持。Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。单点登录(SSO)是个很经典的使用。

PS:当然也可以在网页设置cookies

Cookie数量和长度的限制

每个domain最多只能有20条(某些浏览器会多一些)cookie,每个cookie长度不能超过4KB,否则会被截掉。

Cookie生命周期

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。将Cookie的生存周期设置为“0”或负值,就马上清除Cookie。

Cookie安全性问题

如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。或者是可收集这些信息做一些事。

Cookies请求附带

Cookies每次请求会被发送到服务器,占用额外带宽,示例参数如下(截了一个斗鱼网站请求的图)。

PS:cookies参数需要使用抓包工具(类似fiddler)才能看到,Chrome开发者调试工具看不到的。

 

Cookies的Javascript编程

下面代码来自网上资料:

创建cookies:

function setCookie(c_name,value,expiredays)
{

     var exdate=new Date();
     exdate.setDate(exdate.getDate()+expiredays);
     document.cookie=c_name+"="+escape(value)+((expiredays==null)?"":";expires="+exdate.toGMTString());

}

取值cookies:

function getCookie(c_name)
{
     if(document.cookie.length>0) {

          c_start=document.cookie.indexOf(c_name+"=");
          if(c_start!=-1) {
               c_start=c_start+c_name.length+1;
               c_end=document.cookie.indexOf(";",c_start);
               if(c_end==-1)
                    c_end=document.cookie.length;
               return unescape(document.cookie.substring(c_start,c_end));
          }
     }
     return "";
}

删除cookies:

setCookie("acf_nickname", null , -1);

清除所有cookies:

因为cookies值可能存在“;=”字符,所以清除的函数还没一那么简单,要照着自己工程看着写。

总结

Web SQL一般在移动端使用,localStorage PC和移动端都适用,而cookies是所有持久化存储支持最好的。可根据它们本身的特性选择自己需要使用的方式。

 

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/4976233.html

转载:http://www.cnblogs.com/lovesong/p/4976233.html

时间: 2024-11-03 20:32:34

Web持久化存储Web SQL、Local Storage、Cookies(常用)的相关文章

《PHP精粹:编写高效PHP代码》——2.1节数据持久化和Web应用程序

2.1 数据持久化和Web应用程序为什么通常在Web应用程序里存储信息,而不是仅仅给Web用户一个简单的静态网页,原因有两个:1)内容是动态的,可以不断地更新或编辑,或从其他系统提取内容.2)可为网站访问者显示用户特定的内容.第一点与CMS(Content Management System, 内容管理系统)或类似的应用程序有关.当一个网站包含会员区时,会员通过密码登录访问,而且网页添加了很多个性化元素,例如用其用户名输出问候语,并且显示他们的个人信息(查看View Profile或Edit P

手把手教你阻止Web应用存储敏感数据

Michael Cobb是认证信息系统安全架构专家(CISSP-ISSAP),知名的安全作家,具有十 多年丰富的IT行业经验,并且还从事过十六年的金融行业.他是Cobweb Applications公司的创始人兼常务董事,该公司主要提供IT培训,以及数据安全和分析的支持.Michael还合著过IIS Security一书,并为领先的IT出版物撰写过无数科技文章.此外,Michael还是微软认证数据库系统管理员和微软认证专家.498)this.width=498;' onmousewheel =

aspnet-asp.net web 开发中的sql语句

问题描述 asp.net web 开发中的sql语句 mainThesisCommand.CommandText = "update thesisSet set MAINSELECTED=true where THESISNAME="+lblSelMain.Text; 为什么老是提示"至少一个参数没有被指定值".跟踪时是对的啊

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

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

local storage (H5本地存储)

HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 cookie 完成的.但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高. 1.local storage 靠js完成.一个例子见下. <script type="text/javascript"> if (lo

C++永久对象存储 (Persistent Object Storage for C++)

c++|object|对象      C++永久对象存储 (Persistent Object Storage for C++)简介 描述对象类型 从存储器中分配和释放对象 永久对象协议 存储器构造函数 打开存储器 POST++ 的安装 POST++ 类库 和 POST++一起使用 STL 类 替换标准分配子 如何使用 POST++ S调试 POST++ 应用的细节 关于 POST++ 更多的一些信息 简介POST++ 提供了对应用对象的简单有效的存储. POST++ 基于内存文件镜像机制和页面

ASP.NET创建Web服务管理Web服务状态

ASP.NET创建Web服务管理Web服务状态 XML Web服务在类实现派生于WebService类的XML Web服务时,可以使用和其他ASP.NET应用程序相同的状态管理选项.WebService类包含许多公共ASP.NET对象,包括Session和Application对象. Application对象提供一个储存运行在Web应用程序中的代码可访问的数据的机制,而Session对象允许数据存储在每客户端会话基础上.如果客户端支持cookies,那么可以使用cookie来识别客户端会话.

Web安全(上) Web架构分析

一. Web安全不仅仅是互联网才需要 Web服务是指采用B/S架构.通过Http协议提供服务的统称,这种结构也称为Web架构,随着Web2.0的发展,出现了数据与服务处理分离.服务与数据分布式等变化,其交互性能也大大增强,也有人叫B/S/D三层结构.互联网能够快速流行得益于Web部署上的简单,开发上简便,Web网页的开发大军迅速超过了以往任何计算机语言的爱好者,普及带来了应用上繁荣.J2EE与.NET的殊途同归,为Web流行扫清了厂家与标准的差异:众望所归,SOA选中Web2.0作为其实现的基本

IIS Web服务器的Web Farm(共享网页和共享配置)

这里利用下图的环境建立一个由IIS Web服务器所组成的Web Farm,架设其网址为www.itchenyi.com.我们将直接在图中两台IIS Web服务器上启用Windows NLB,NLB操作模式采用单播模式. Web Farm的软硬件需求 要搭建以上环境的话,其软硬件配置需匹配下诉要求(如非生产环境,建议使用Microsoft的Hyper-V所提供的虚拟机来测试) 1.IIS Web服务器Web1与Web2:这两台组成Web Farm的服务器都是Windows Server 2008R