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

  • Cookie
      Cookie储存在客户端,由用户自己销毁
      Cookie:客户端信息存放对象,可以把用户的信息保存在用户的本地,不必总是访问服务器
      Cookie用于保存客户浏览器请求服务器页面的请求信息,也可以用它保存非敏感性的内容。保存时间可以根据需要设置。如果没有设置Cookie失效时间,它仅保存至浏览器关闭。如果将Cookie设置为Min Value,则表示它永不过期。Cookie存储量受到很大限制,一般浏览器支持最大容量为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);
            }

你可能感兴趣的:(基础知识小结)