首页 > 其他分享 >HTML5客户端数据存储

HTML5客户端数据存储

时间:2023-08-27 23:01:15浏览次数:44  
标签:存储 obj pagecount sessionStorage localStorage HTML5 客户端

HTML5 使在不影响网站性能的情况下存储大量数据成为可能。之前,这些都是由 cookie 完成的,cookie不适合大量数据的存储,因为会影响速度。

举个例子:

var obj = {x:1};
//例1
localStorage.obj = obj;//不能直接存储非字符串类型
alert(localStorage.obj.x);//undefined
localStorage.obj = JSON.stringify(obj);//转化为字符串后存储
//例2
JSON.parse(localStorage.obj).x = 2;//只获取到存储对象的副本,设置了副本的属性值,之后该副本废弃,真正的存储对象保持不变
//JSON.parse(localStorage.getItem("obj")).x = 2;//同上
alert(JSON.parse(localStorage.obj).x);//1
//例3
obj.x=3;
localStorage.obj = JSON.stringify(obj);
alert(JSON.parse(localStorage.obj).x);//3

HTML5 提供了两种在客户端存储数据的方法:

1、localStorage : 存储的数据没有时间限制

第二天、第二周或下一年之后,数据依然可用。

//下面的例子对用户访问页面的次数进行计数
<script type="text/javascript">
if (localStorage.pagecount)
{
  localStorage.pagecount=Number(localStorage.pagecount) +1;
}
else
{
  localStorage.pagecount=1;
}
document.write("Visits "+ localStorage.pagecount + " time(s).");
</script>

2、sessionStorage : 针对一个 session 进行数据存储

当用户关闭浏览器窗口后,数据会被删除。

//下面的例子对用户在当前 session 中访问页面的次数进行计数
<script type="text/javascript">
if (sessionStorage.pagecount)
{
  sessionStorage.pagecount=Number(sessionStorage.pagecount) +1;
}
else
{
  sessionStorage.pagecount=1;
}
document.write("Visits "+sessionStorage.pagecount+" time(s) this session.");
</script>

使用详解

首先自然是检测浏览器是否支持本地存储。在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了。二者用法完全相同,这里以localStorage为例。

if(window.localStorage){
 alert('This browser supports localStorage');
}else{
 alert('This browser does NOT support localStorage');
}

存储数据的方法就是直接给window.localStorage添加一个属性,例如:window.localStorage.a 或者 window.localStorage["a"]。它的读取、写、删除操作方法很简单,是以键值对的方式存在的,如下:

localStorage.a = 3;//设置a为"3"
localStorage["a"] = "sfsf";//设置a为"sfsf",覆盖上面的值
localStorage.setItem("b","isaac");//设置b为"isaac"
var a1 = localStorage["a"];//获取a的值
var a2 = localStorage.a;//获取a的值
var b = localStorage.getItem("b");//获取b的值
localStorage.removeItem("c");//清除c的值

这里最推荐使用的自然是getItem()和setItem(),清除键值对使用removeItem()。如果希望一次性清除所有的键值对,可以使用clear()。另外,HTML5还提供了一个key()方法,可以在不知道有哪些键值的时候使用,如下:

var storage = window.localStorage;
function showStorage(){
 for(var i=0;i<storage.length;i++){
  //key(i)获得相应的键,再用getItem()方法获得对应的值
  document.write(storage.key(i)+ " : " + storage.getItem(storage.key(i)) + "<br>");
 }
}

需要注意的是,HTML5本地存储只能存字符串,任何格式存储的时候都会被自动转为字符串,所以读取的时候,需要自己进行类型的转换。

标签:存储,obj,pagecount,sessionStorage,localStorage,HTML5,客户端
From: https://www.cnblogs.com/lgx5/p/17661051.html

相关文章

  • 段页式存储管理
    对进程空间先分段,后分页,具体原理图和优缺点如下:优点:空间浪费小、存储共享容易、存储保护容易、能动态链接。缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降。......
  • 二叉树的链式存储结构 C++代码实现
    /*二叉树的链式存储结构*/#include<iostream>usingnamespacestd;/*二叉链表的定义*/typedefstructBiTNode{chardata;structBiTNode*lchild,*rchild;}BiTNode;typedefBiTNode*BiTree;//*************************************************......
  • 稀疏矩阵的压缩存储及转置,快速转置法,C++代码实现
    /*稀疏矩阵的压缩存储及转置*/#include<iostream>usingnamespacestd;/*三元组顺序表的类型定义*/#defineitemSize100typedefstruct{introw,col;intitem;}thNode;typedefstruct{thNode*data;//data[0]不用intm,n,t;//分别表示行数、列......
  • oracle学习笔记(9)——逻辑存储结构——区
    1、区的概念:   区是由一系列连续的数据块构成的逻辑存储单元,是存储空间分配与回收的最小单位。当创建一个数据库对象时,Oracle为对象分配若干个区,以构成一个段来为对象提供初始的存储空间。当段中已分配的区都写满后,Oracle会为段分配一个新区,以容纳更多的数据。2、区的管理(1)区......
  • oracle学习笔记(10)——逻辑存储结构——段
    段是由一个或多个扩展区组成的逻辑存储单元,数据库模式对象在逻辑上是以段来占据表空间的大小,段代表特定数据类型的数据存储结构。1、 段的类型    段分为:数据段、索引段、临时段、回滚段    1)数据段       数据段用来存储表或簇的数据,可以细分为表......
  • 前端存储方案一览
    Cookies在HTML5标准前本地储存的主要的也是最早提出的⽅式,优点是兼容性好,请求头⾃带cookie⽅便(使用fetch的话需要额外配置),缺点是⼤⼩只有4k,⾃动请求头加⼊cookie浪费流量,而且每个domain限制20个cookie,使⽤起来麻烦,需要自行封装相关方法。Cookie一旦创建成功,名称就无法修改Cooki......
  • 浮点数在内存中的存储形式
       大家都知道浮点数是什么,那他在内存中是怎么存储的呢?根据国际标准IEEE754规定中,任意一个二进制浮点数v可以表示成下面的形式:(-1)S*M*2E(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。M表示有效数字,大于等于1,小于2.2^E表示指数位。   那怎么来理解这段话呢,我们举个例......
  • Oracle 物理存储结构
    介绍RDBMS(关系型数据库)通常具有物理存储结构和逻辑存储结构。采用物理和逻辑结构分离的方式,可以做到管理物理结构而不影响逻辑结构的访问。Oracle将物理结构又分为数据库和实例。数据库是Oracle数据存储在磁盘存储中的一组文件。这些文件又根据不同的作用划分成了三类,分别是:数据......
  • MySQL 一行记录是怎么存储的?
    一、数据存在哪个文件可以看到,共有三个文件,这三个文件分别代表着:db.opt,用来存储当前数据库的默认字符集和字符校验规则。t_order.frm,t_order的表结构会保存在这个文件。在MySQL中建立一张表都会生成一个.frm文件,该文件是用来保存每个表的元数据信息的,主要包含表结构定义......
  • 一、MySQL体系结构和存储引擎
    一、MySQL体系结构和存储引擎1.1定义数据库和实例数据库:物理操作系统文件或其他形式文件类型的集合。在MySQL数据库中,数据库文件可以是frm、MYD、MYI、ibd结尾的文件。实例:MySQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行得后台线程所共享。需要牢记的是,......