美文网首页
客户端储存

客户端储存

作者: lhdoeo | 来源:发表于2018-04-01 19:26 被阅读0次

localStorage和sessionStorage

实现了“Web存储”的浏览器在Window对象上定义了两个属性:localStorage和sessionStorage。这两个属性都代表同一个storage对象——一个持久化关联数组,使用字符串来索引,存储的值也都是字符串形式的。localStorage和sessionStorage两者的区别在于存储的有效期和作用域不同,以及谁拥有数据的访问权。

使用localStorage进行存储:

localStorage.x = 10; //在存储一个数字时,会自动把它转化成字符串
var x = parseInt(localStorage.x);//获取该值时别忘了类型的转化
//同样地,存储一个日期类型数据时也要进行编码和解码
localStorage.lastModify = (new Date()).toLocaleDateString();
var lastModify = new Date(Date.parse(localStorage.lastModify));
//使用JSON可以使基本数据类型的编码解码变得方便
localStorage.data = JSON.stringify(data)
var data = JSON.parse(localStorage.data)

存储有效期和作用域

localStorage存储的数据是永久性的,除非可以删除,否则会一直保留在电脑上。
localStorage的作用域是限定在文档源(document origin)级别的。文档源通过协议、主机名以及端口三者来确定。
sessionStorage存储的有效期与浏览器标签页是一致的,一旦标签页关闭,则数据也会被删除。
sessionStorage作用域也是文档源,但是还被限定在窗口中,如果同源的文档在不用的浏览器标签页中,那么他们间是无法共享数据的。

http://www.example.com
https://www.example.com
http:www.example.com:8000
这些都不是同源的

同源的文档间共享同样的localStorage。

存储API

localStorage.setItem("key",value)//存储一个数值,当然可以直接用.访问符存储和读取值
localStorage.getItem("key")//获取值
for(var i=0; i<localStorage.length; i++){
  var name = localStorage.key(i)//获取第i对名字
  var value = localStorage.getItem(name);
}
localStorage.removeItem("x")//删除
localStorage.clear("x")//全部删除

为什么最好使用setItem()和getItem()而不用点?
在将来,如果浏览器完全实现了“Web存储”标准,那像对象和数组类型的值通常都是可变的,因此存储对象要求存储他们的副本,以确保之后任何对这类对象的改变都不影响存储对象。同样的,在获取该对象的时候也要求获取的是该对象的副本,以确保对获取对象的改动不会影响到存储对象

localStorage.o = {x:1};//存储了一个对象
localStorage.o.x = 2;//试图修改值
localStorage.o.x//结果没变
//如果使用getItem()就不会这么让人困惑
localSotrage.getItem('o').x = 2

存储事件

在localStorage和sessionStorage的数据发生改变,浏览器会触发存储事件(但是只有其他可访问该数据的浏览器标签页会收到该事件,改变数据的当前页面是不会触发事件的)。在Window对象中有onstorage这个属性方法,使用方式跟onclick=function(event)一样。
在传入的事件对象中,有这5个重要的属性:
1.key 被设置或移除项的键名
2.newValue
3.oldValue
4.storageArea 显示是localStorage还是sessionStorage
5.url 触发该事件的脚本url

Cookie

cookie是指web浏览器存储的少量数据(最多不超过4KB),并且会附带在每次的向服务器发起的HTTP请求中,通过Document对象的cookie属性可以实现cookie操作。
cookie的有效期跟作用域都是可调的,它默认的有效期跟sessionStorage一样,作用域跟localSotrage一样。

cookie使用:

//存储cooike
document.cookie = "lastModify="+encodeURIComponent(document.lastModified);
/*cookie的value字符串中不允许出现分号、逗号和空白符,因此存储前可以使用JS的
全局函数encodeURIComponent对值进行编码,相应的读取cookie值时需要使用
decodeURIComponent()进行解码。*/
//max-age属性设置cookie有效期,以秒为单位
document.cookie = "name="+value+";"+"max-age="+seconds;
//path属性设置cookie的作用域
document.cookie = ”path=/“  //表示该页面的cookie对同源的所有页面可见
//domain属性设置子域间共享
document.cookie = ”path=/;domain=.example.com"  //则子域.example.com下的所有页面都能访问该cookie
//读取cookie
var cookie = document.cookie.split(/\;/);

相关文章

  • 客户端储存

    localStorage和sessionStorage 实现了“Web存储”的浏览器在Window对象上定义了两个...

  • H5之Web存储

    客户端储存数据1.两种方式:a.localStorage - 没有时间限制的数据储存b.sessionStorag...

  • cookie与storage

    HTTP Cookie 介绍 通常叫做cookie,用于客户端的数据储存(浏览器),通常用于储存用登录信息,偏好设...

  • 客户端储存(localStorage/sessionStorag

    localStorage/sessionStorage 区别(localStorage/sessionStorag...

  • cookie和session辨析

    一、cookie是什么 cookie就是服务器发给客户端的信息,这些信息以文本文件的方式储存在诸如浏览器等的客户端...

  • jquery之cookie操作

    Cookies 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术; 下载与引...

  • jquery.cookie

    Cookies 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术; 下载与引...

  • jquery.cookie.js 使用方法

    Cookies定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术;下载与引入:...

  • Jquery Cookie

    Cookie让网站服务器把少量数据储存到客户端的硬盘或内存中,从客户端的硬盘读取数据的一种技术。下载并引入jque...

  • web存储、应用缓存、web workers

    客户端存储数据 两种方式: localStorage-没有时间限制的数据存储存储特点: localStorage方...

网友评论

      本文标题:客户端储存

      本文链接:https://www.haomeiwen.com/subject/qpdacftx.html