发表于: 2019-10-02 22:05:03
1 778
今天完成的事情:
1.把小课堂整理了一下,然后学习vuex视频,明天动手进行编辑使用
请描述一下cookies,sessionStorage和localStorage的区别?
(1)背景介绍:
在html5出来之前,cookie一直作为本地存储的一个方法来使用。后来html5提供了一种在客户端本地保存数据的功能,它就是Web Storage,具体来说,Web Storage又分为两种:localStorage和sessionStotage在客户端存储数据,WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回服务器。
(2)知识剖析:
1、cookie:
(1)、cookie英文饼干,顾名思义,大小应该非常小,cookie非常小,它的大小限制在4kb左右,是网景公司的前雇员在1993年发明。它的主要用于保存登陆信息,比如你登陆某个网站市场可以看到'记住密码’,这就是通过在cookie中存入一段辨别用户身份的数据来实现的。
(2)、localStorage:
localStorage是HTML5标准中新加入的技术,当然早在IE6时代就有一个userData的东西用于本地存储,而当时考虑到浏览器的兼容性,更通用的方案是使用flash。如今localStorage被大多数浏览器所支持。
(3)、sessionStorage:
sessionStorage与localStorage的接口类似,但保存数据的生命周期与localStorage不同,做过后端的同学都知道Session这个词,翻译过来就是会话。而sessionStorage是前端的一个概念。它只是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。但是页面关闭后,sessionStorage中的数据就会被清空。
(3)常见问题:
上面所说三者的区别是什么?
(4)解决方案:
(1)、数据上的生命周期的不同
Cookie 一般由服务器生成,可设置失效时间,如果在浏览器端生成cookie,默认是关闭后失效。
localStorage 除非被永久清除,否则永久保存。
sessionStorage 仅在当前会话会有效,关闭页面或浏览器后被清除
(2)、存放数据的大小不同
Cookie 一般为4kb
localStorage 和 sessionStorage 一般为5mb
(3)、与服务器端通信不同
Cookie 每次都会携带HTTP头中,如果使用cookie保存过多数据会带来性能问题
localStorage 和 sessionStorage 仅在客户端(即浏览器)中保存,不参与和服务器的通信。
(4)、易用性
Cookie 需要程序员自己来封装,原生的cookie接口不够友好
localStorage 和 sessionStorage 原生接口可以接受,可以封装来对Object和Array有更好的支持。
(5)、快速显示
有的数据存储在WebStorage上,再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多,所以速度更快;
WebStorage提供了一些方法,数据操作比cookie方便;
setItem (key, value) —— 保存数据,以键值对的方式储存信息。
getItem (key) —— 获取数据,将键值传入,即可获取到对应的value值。
removeItem (key) —— 删除单个数据,根据键值移除对应的信息。
clear () —— 删除所有的数据
key (index) —— 获取某个索引的key
(5)编码实战:
html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Web Storage</title>
</head>
<body>
<h1>Web Storage </h1>
<p id="msg"></p>
<input type="text" id="input" />
<input type="button" value="保存数据" onclick="saveStorage('input');" />
<input type="button" value="读取数据" onclick="loadStorage('msg');" />
<script src="storage.js"></script>
</body>
</body>
</html>
js:
//sessionStorage 示例 (保存一个会话周期:从打开浏览器——到关闭浏览器窗口)
function saveStorage(id){
var target=document.getElementById(id);
var str=target.value;
sessionStorage.setItem("message",str);
//或者sessionStorage.message=str;
}
function loadStorage(id){
var target=document.getElementById(id);
var msg=sessionStorage.getItem("message");
//或者var msg=sessionStorage.message;
target.innerHTML=msg;
}
//localStorage 示例(可永久保存)
function saveStorage(id){
var target=document.getElementById(id);
var str=target.value;
localStorage.setItem("message",str);
//或者localStorage.message=str;
}
function loadStorage(id){
var target=document.getElementById("msg");
var msg=localStorage.getItem("message");
//或者var msg=localStorage.message;
target.innerHTML=msg;
}
(6)拓展思考:
三者的使用场景
localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据,也可以用来统计页面访问次数。
sessionStorage用于保存每个用户的专用信息,变量的值保存在服务器端,通过SessionID来区分不同的客户。也可以用来统计当前页面元素的点击次数。比如杀人游戏
cookie,判断用户是否登陆过网站,以便下次登录时能够实现自动登录。如果我们删除cookie,则每次登录必须重新填写登录的相关信息。比如页面一键换色,下次打开是换后的颜色。
(7)参考文献:
参考一:cookie,localStorage,SessionStorage三者的区别
https://www.cnblogs.com/yaogengzhu/p/11006547.html
参考二:cookies、sessionStorage和localStorage解释及区别
https://www.cnblogs.com/pengc/p/8714475.html
明天计划:
进行页面的编辑功能添加
评论