JavaScript -- 数据存储
Cookie
Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。
一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。
即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。
Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。
所以Cookie会随HTTP请求在服务器与客户端之间来回传递。
Cookie 是一些数据, 存储于你电脑上的文本文件中。
Cookie 以名/值对形式存储,如下所示:
name=adoctors
使用 JavaScript 创建Cookie
document.cookie="name=adoctors";
还可以为 cookie 添加一个过期时间(以 UTC 或 GMT 时间)。默认情况下,cookie 在浏览器关闭时删除:
document.cookie="name=adoctors; expires=Thu, 18 Dec 2018 12:00:00 GMT";
使用 JavaScript 读取 Cookie
var x = document.cookie;
使用 JavaScript 修改 Cookie
在 JavaScript 中,修改 cookie 类似于创建 cookie,旧的 cookie 将被覆盖。
使用 JavaScript 删除 Cookie
删除 cookie 非常简单。您只需要设置 expires 参数为以前的时间即可
document.cookie = "name=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
为了使用方便,将方法封装如下:
function setCookie(name,val,day){
	var time=new Date();
	time.setTime(time.getTime()+day*24*60*60*1000);
	document.cookie=name+"="+val+";expires="+time.toGMTString();
}
function getCookie(name){
	var arr=document.cookie.split(";");
	for(var i=0;i<arr.length;i++){
		arr[i]=arr[i].replace(/^\s*|\s*$/,"");
		if(arr[i].indexOf(name+"=")==0){
			return arr[i].substring(name.length+1)
		}
	}
}
function clearAllCookie(){
	var str=document.cookie.match(/[^=;]+(?==)/g);
	for(var i=0;i<str.length;i++){
		str[i]=str[i].replace(/^\s*|\s*$/,"");
		document.cookie=str[i]+"=0;expires=Wed Jan 04 2000 15:45:56 GMT"
	}
}
Cookie的缺点主要集中于安全性于隐私保护,主要包括一下几点:
- Cookie可能被用户禁用
- 同一个页面被不同浏览器访问时,浏览器之间保存的Cookie是不能互相访问的
- 每个Cookie都是存在客户端硬盘上的文件,可能被删除
- Cookie安全性不够高,所有Cookie都是以纯文本的形式记录于文件中
sessionStorage & localStorage
localStorage用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
sessionStorage用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
不管是 localStorage,还是 sessionStorage,可使用的API都相同,常用的有如下几个(以localStorage为例):
保存数据:localStorage.setItem(key,value);
读取数据:localStorage.getItem(key);
删除单个数据:localStorage.removeItem(key);
删除所有数据:localStorage.clear();
得到某个索引的key:localStorage.key(index);
如:
sessionStorage.setItem('bindingType','wechat');
sessionStorage.getItem('topicRes')
localStorage.setItem('province', JSON.stringify(res.data.data));
localStorage.getItem("province")
与Cookie相比的优势
- 不需要安装额外的插件
- 存储空间高达5MB(Cookie只有4kb)
- 操作简单
注意:任何格式存储是会自动被转换为字符串,所以读取时注意格式转换。
JavaScript -- 数据存储的更多相关文章
- 关于javascript数据存储机制的一个案例。
		之前在学习js的结合性的时候,我有点不太明白,在网上找到一个比较经典的C语言优先级结合性的案例,就是下边这一个.本想在js之中测试一番,结果竟然发现得出的结果和网上的不一样,这令我百思不得其解,后经高 ... 
- JavaScript数据存储和深浅拷贝实际运用
		JavaScript分两种数据类型.1.简单数据类型有:number, string, boolean, undefined和null当声明一个简单数据类型的变量时,在内存中会把数据存在栈里.2.复杂 ... 
- 【前端学习笔记05】JavaScript数据存储Cookie相关方法封装
		//Cookie设置 //设置新cookie function setCookie(name,value,duration){ var date = new Date(); date.setTime( ... 
- JavaScript高级编程———数据存储(cookie、WebStorage)
		JavaScript高级编程———数据存储(cookie.WebStorage) <script> /*Cookie 读写删 CookieUtil.get()方法根据cookie的名称获取 ... 
- JavaScript笔记01——数据存储(包括.js文件的引用)
		While, generally speaking, HTML is for content and CSS is for presentation, JavaScript is for intera ... 
- 数据存储    --《高性能JavaScript》
		1.数据存储的方式 1.字面量 2.变量 3.数组项 4.对象成员 2.各自的性能特点 1.访问字面量和局部变量的速度最快,访问数组项和对象成员相对较慢 2.由于局部变量在作用域链的起始位置,因此访问 ... 
- Javascript本地存储小结
		前言 总括:详细讲述Cookie,LocalStorge,SesstionStorge的区别和用法. 人生如画,岁月如歌. 原文博客地址:Javascript本地存储小结 知乎专栏&& ... 
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
		近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ... 
- 15个JavaScript本地存储技术的函数库和工具
		当构建更复杂的JavaScript应用程序运行在用户的浏览器是非常有用的,它可以在浏览器中存储信息,这样的信息可以被共享在不同的页面,浏览会话. 在最近的过去,这将有可能只被cookies文本文件保存 ... 
随机推荐
- TXLSReadWriteII2版本导出Excel文件:
			//TXLSReadWriteII2版本导出Excel文件: procedure TForm1.N1Click(Sender: TObject); var i: Integer; aSaveDialo ... 
- jmeter--简单使用
			1.启动jmeter 2.创建线程组 2.点击线程组,选择添加,选择sampler(采样器),选择http请求 3.在添加的请求页面中,填写服务器名称或IP,端口,路径,请求的方法 4.添加请求的参数 ... 
- L104
			marsh:It was like my own marsh country, flat and monotonous.The government will take more measures t ... 
- freeMarker(三)——模板开发指南之数值、类型
			学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 模板开发指南——数值.类型 1.基本内容 1.1 什么是数值? 正如你 ... 
- SQL Server DBA十大必备工具使生活轻松
			[IT168 技术]曾经和一些DBA和数据库开发人员交流时,问他们都用过一些什么样的DB方面的工具,大部分人除了SSMS和Profile之外,基本就没有使用过 其他工具了;诚然,SSMS和Profil ... 
- [CJOJ2425][SYZOI Round1]滑稽的树
			cjoj sol 子树转化成dfs序上的区间. 所以就变成了:区间Kth,区间内[a,b]范围内的数有多少个,单点修改 裸的树套树啊. code #include<cstdio> #inc ... 
- NOIp2018集训test-10-16 (bike day2)
			“毕姥爷:今天的题好简单啊,你们怎么考得这么烂啊,如果是noip你们就凉透了啊“ 今天的题难度应该是3.2.1递减的,但是我不知道哪根筋没搭对,平时我最多1h多就弃题了,今天硬生生写了2h20min的 ... 
- yum配置文件位置
			centos的yum配置文件 cat /etc/yum.conf cachedir=/var/cache/yum //yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/ ... 
- ElasticSearch logo  分布式搜索引擎 ElasticSearch
			原文来自:http://www.oschina.net/p/elasticsearch Elastic Search 是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中 ... 
- ThinkPHP5.1的公共函数
			最初使用ThinkPHP3.2.3的时候,我们自己定义的公共函数常常放置于 \Common\function.php ThinkPHP5.1 公共函数 项目公用的会放在 \application\co ... 
