您的位置:首页 > 其它

浏览器中的三种存储Cookie,Session,LocalStorage

2019-05-08 20:28 423 查看

开发工具与关键技术:工具:Visual Studio 2015 技术:C#,javascript
作者:范子超  撰写时间:2019-05-06

  • Cookie
      Cookie储存在客户端,由用户自己销毁
      Cookie:客户端信息存放对象,可以把用户的信息保存在用户的本地,不必总是访问服务器
      Cookie用于保存客户浏览器请求服务器页面的请求信息,也可以用它保存非敏感性的内容。保存时间可以根据需要设置。如果没有设置Cookie失效时间,它仅保存至浏览器关闭。如果将Cookie设置为Min Value,则表示它永不过期。Cookie存储量受到很大限制,一般 4000 浏览器支持最大容量为4096字节。因此不能用来存储大量数据。由于并非所有浏览器都支持Cookie,并且它是以明文方式保存的,所以最好不要保存敏感性的内容。否则会影响网络安全。Cookie以文件的形式保存的请求信息
      Cookie的简单应用:
//Response.Cookies["name"].Value = "Myname"; //存值
//string myname = Response.Cookies["name"].Value; //取值
HttpCookie cookie = new HttpCookie("mycookie"); //定义cookie对象以及名为mycookie的项
DateTime dt = DateTime.Now; //定义时间对象
TimeSpan ts = new TimeSpan(1, 0, 0, 0); //cookie有效作用时间,具体查msdn
cookie.Expires = dt.Add(ts); //添加作用时间
cookie.Values.Add("user", "your name"); //增加属性
cookie.Values.Add("userid", "123456");
Response.AppendCookie(cookie); //确定写入cookie中
//读取cookie
if (Request.Cookies["mycookie"] != null)
{
string temp = Convert.ToString(Request.Cookies["mycookie"].Values["user"]) + "	" + Convert.ToString(Request.Cookies["mycookie"].Values["userid"]);
//读全部就用Request.Cookies["mycookie"].Value)
}
//修改cookie
Response.Cookies["mycookie"]["user"] = "2";
Response.Cookies["mycookie"].Expires = DateTime.Now.AddDays(1);
//删除cookie下的属性
HttpCookie mycookie = Request.Cookies["mycookie"];
mycookie.Values.Remove("userid");
mycookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(mycookie);
//删除所有cookie,就是设置过期时间为现在就行了
int cookies = Request.Cookies.Count - 1;
for (int i = 0; i < cookies; i++)
{
mycookie = Request.Cookies[i];
mycookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(mycookie);
}
  • Session
      Session 储存在服务端,客户端(浏览器)关闭即销毁(若长时间不使用 且 浏览器未关闭的情况下, 默认自动销毁时间为20分钟)
      Session:用户全局变量,对于该用户的所有操作过程都有效
      Sessio用于保存每个用户的专用信息,它的生存期是用户持续请求时间再加上一段时间(可以在web.config中设置,默认是20分钟)。Session中的信息保存在服务器的内存中,当然你也可以设置它的保存方法(如存在SQL数据库中)。由于用户停止使用程序后它仍然在内存中保持一段时间,因此使用Session对象保存用户数据的方法效率很低。对于小量的数据。使用Session还是一个不错的选择。
      Session:该对象是HttpSession类型的对象,描述一个客户端与服务器之间的一次通话时段,该段时间内包含客户端的若干次请求和服务器的相应响应,整个时间段session对象都存在。常用来实现购物车之类的存储当前用户的数据。不同用户有各自的不同session对象
      Session的简单应用:
//Session["user"] = "mysession";//存值
//string username = Session["user"].ToString();//取值
Session["checkcode"] = "";
string checkcode = Session["checkcode"].ToString();
//保存对象
Test test = new Test();
Session["test"] = test;
//取值
Test test1 = (Test)Session["test"];
  • LocalStorage
      localStorage用于持久化的本地存储,除非主动删除数据,否则数据永远也不会过期。

  localStorage的优势:

  • localStorage拓展了cookie的4K限制
  • localStorage可以将第一次请求的数据直接存储到本地,这相当于一个5M大小的针对于前端的数据库,相比cookie可以节约带宽,但这个却是只有在高版本的浏览器在才支持的。

   localStorage的局限:

  • 浏览器的大小不统一,并且在IE8以上的版本才支持localStorage这个属性。
    -目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。
  • localStorage在浏览器的隐私模式下面是不可读取的。
  • localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
  • localStorage不能被爬虫抓取到。
    localStorage与Session的唯一一点区别就是localStorage属于永久性存储,而Session属于当会话结束的时候,Session中的键值对会被清空。

  使用localStorage要注意几点:

  • localStorage的使用也是遵循同源策略的,所以说不用的网站之间localStorage是不同的,它们之间并没有什么联系。
  • 存入localStorage的数据,不管存储的时候是什么类型,存入到里面之后都会被转换成string类型,所以有时需要进行类型转换。

  localStorage的简单应用:

if (!window.localStorage) {
alert("浏览器不支持localStorage");
return false;
} else {
var storage = window.localStorage;
//三种存取值的方式,官方推荐使用setItem/getItem存取值
//修改则是直接将对应的storage值覆盖
//存
storage.a = "1";
storage["b"] = 2;
storage.setItem("c", 3);
//取
var a = storage.a;
var b = storage["b"];
var c = storage.getItem("c");
//删除某一个storage
storage.removeItem("c");
//清空storage
storage.clear();
//注意事项:一般我们将JSON存入localStorage中,但是localStorage会自动将localStorage转换成字符串形式,
//这个时候我们可以使用JSON.stringify()这个方法,来将JSON转换成JSON字符串
var data = {
name: 'myname',
sex: 'man'
};
var d = JSON.stringify(data);
storage.setItem("data", d);
//将JSON字符串转换成JSON对象
var json = storage.getItem("data");
var jsonObj = JSON.parse(json);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: