综述客户端数据存储

运维 数据库运维
为什么需要客户端数据存储?响应时间中,http请求响应占用的时间不可小视,因此减少http的请求可提高用户体验,当然也能减少异常出现的几率。 如何使用客户端数据存储?在我有限的知识范畴内,把客户端数据存储分为两类,一类是同页数据存取访问,一类是跨页数据存储访问。

概要

客户端数据存储是什么?

简单的说就是把数据存储在特定的客户端,从而减少向服务器请求数据的次数。

为什么需要客户端数据存储?

响应时间中,http请求响应占用的时间不可小视,因此减少http的请求可提高用户体验,当然也能减少异常出现的几率。

如何使用客户端数据存储?

在我有限的知识范畴内,把客户端数据存储分为两类,一类是同页数据存取访问,一类是跨页数据存储访问。

同页数据存取访问

我所知道的同页数据存储有五类(脚本库是用的是jquery-1.6):

***种是使用 存取数据

取:$(“#cds1”).val() 存:$(“#cds1”).val(‘other data’).

第二种是使用html自定义属性存取数据

 

 

取:$(“#cds2”).attr(“val”) 存:$(“#cds2”).attr(“val”,”other data”);

第三种是使用html5中新增的属性“data-youvalue”方式存取

 

 

取:$(“#cds3”).data(“val”) 存:$(“#cds3”).data(“val”,”other val”),需要注意的是如果data-val有初始值,$(“#cds3”).data(“val”)会丢失前面的0,可以使用$(“#cds3”).attr(“data-val”)方式解决这个问题.但如果是通过$(“#cds3”).data(“val”,”001”)方式设置后再取,再用$(“#cds3”).data(“val”)取则不会丢失。

第四种方式是在ie中加入的

 

代码如下(代码在ie[7|8|9]测试通过,在ff4.0.1中会报错):

  1. // set data  
  2. var dS = document.getElementById("cds4");  
  3. dS.setAttribute("name", "chen qi liang");  
  4. dS.save("info");  
  5. // get data  
  6. dS.load("info");  
  7. alert(dS.getAttribute("name"));  
  8. // delete data  
  9. dS.removeAttribute("name");  
  10. dS.save("info"); 

 

第五种是使用sessionStorage代码如下(ie[7|8|9],ff4.0.1测试通过):

  1. sessionStorage.name = "chen qi liang";或sessionStorage.setItem(“name”,”chen qi liang”)  
  2. alert(sessionStorage.name); 或alert(sessionStorage.getItem(“name”)); 

跨页数据存取访问

我所知道的有三种方式

***种方式url参数传递(个人认为不能算严格意义上的客户端数据存取)

  1. url?parameter=value 
  2. var cql ={  
  3. // get querystring, ignore the case sensitive  
  4. // if no match then return ""  
  5. // 此方法由同事范占房提供  
  6. getQueryStr: function(param) {  
  7. var re = new RegExp("[&,?]" + param + "=([^\\&]*)", "i");  
  8. var a = re.exec(document.location.search);  
  9. if (a == null)  
  10. return "";  
  11. return a[1];  
  12. }  
  13. }; 

第二种是cookie方式存取方式我写了一个插件请参考http://www.cnblogs.com/cqiliang/archive/2011/05/20/2052184.html,还有一类cookie是http专用cookie,javascript无法获取它的值。在c#中设置如下:

  1. HttpCookie cookie = new HttpCookie("test");  
  2. cookie.HttpOnly = true; // http 专用cookie  
  3. cookie.Values["item1"] = "value1";  
  4. cookie.Values["item2"] = "value2";  
  5. HttpContext.Current.Response.Cookies.Set(cookie); 

第三种方式是globalStorage(在html5中被localStorage替换):

  1. globalStorage['wrox.com'].name = 'wrox';//保存数据 var name = globalStorage['wrox.com'].name;//获取数据  
  2. localStorage.setItem("name", "chemdmeo");//保存数据  
  3. localStorage.book = 'js'; //保存数据  
  4. localStorage.book//获取数据  
  5. localStorage.getItem(“name”) //获取数据  
  6. //兼容只支持globalStorage的浏览器 function getLocalStorage() { if(typeof localStorage == 'object') { return localStorage; } else if(typeof globalStorage == 'object') { return globalStorage[location.host]; } else { throw new Error('Local storage not available.'); } }; 

注:并不是所有浏览器都支持上述的dom存储。

客户端存储数据是不安全的,敏感数据不应使用这种方式存储。

原文链接:http://www.cnblogs.com/cqiliang/archive/2011/05/24/2055642.html

【编者推荐】

  1. 如何解决PHP+MySQL出现乱码的现象
  2. 教你如何利用MySQL学习MongoDB之安装篇
  3. MySQL配置时提示无法连接到MySQL本地服务器
  4. MySQL中的NoSQL插件
  5. 论MySQL数据库中两种数据引擎的差别
责任编辑:艾婧 来源: 博客园
相关推荐

2016-10-20 16:11:39

HtmlJavascript

2017-04-06 15:40:31

客户端数据存储技术

2019-08-07 10:23:20

Cookie客户端数据库

2021-09-22 15:46:29

虚拟桌面瘦客户端胖客户端

2011-08-17 10:10:59

2010-05-31 10:11:32

瘦客户端

2011-03-02 14:36:24

Filezilla客户端

2011-03-24 13:00:31

配置nagios客户端

2010-12-21 11:03:15

获取客户端证书

2011-10-26 13:17:05

2011-03-21 14:53:36

Nagios监控Linux

2011-04-06 14:24:20

Nagios监控Linux

2013-05-09 09:33:59

2009-03-04 10:27:50

客户端组件桌面虚拟化Xendesktop

2010-02-22 09:03:22

零客户端瘦客户端VDI终端

2009-07-15 17:33:08

Swing客户端

2011-03-25 14:25:38

NagiosWindows监控

2009-11-17 15:02:27

Oracle客户端

2012-10-11 17:02:02

IBMdw

2012-11-28 11:05:42

IBMdW
点赞
收藏

51CTO技术栈公众号