zoukankan      html  css  js  c++  java
  • JS中浏览器的数据存储机制

    一、JS中的三种数据存储方式

    cookie、sessionStorage、localStorage

    二、cookie

    1、cookie的定义:

    cookie是存储在浏览器上的一小段数据,用来记录某些当页面关闭或者刷新后仍然需要记录的信息。在控制台用document.cookie可以查看当前正在浏览网站的cookie。

    2、cookie存在安全问题:

    cookie虽然很方便,但是使用cookie有一个很大的弊端,cookie中的所有数据在客户端就可以被修改,数据非常容易被伪造,那么一些重要的数据就不能放在cookie中了,而且如果cookie中数据字段太多会影响传输效率

    3、cookie的作用

    • 保存用户登录状态。例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。 cookie还可以设置过期时间,当超过时间期限后,cookie就会自动消失。因此,系统往往可以提示用户保持登录状态的时间:常见选项有一个月、三个 月、一年等。

    • 跟踪用户行为。例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况。如果每次都需要选择所在地是烦琐的,当利用了 cookie后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后 台完成,所以这样的页面就像为某个用户所定制的一样,使用起来非常方便

    • 定制页面。如果网站提供了换肤或更换布局的功能,那么可以使用cookie来记录用户的选项,例如:背景色、分辨率等。当用户下次访问时,仍然可以保存上一次访问的界面风格。

    三、sessionStorage

    当用户用账号和密码登录某个网站后,刷新页面仍然保持登录的状态,服务器如何分辨这次发起请求的用户是刚才登录过的用户呢?这里就是用session保存状态。

    用户在输入用户名密码提交给服务器,服务端验证通过后会创建一个session用于记录用户的相关信息,这个session可保存在服务器内存中也可保存在数据库中。

    • 创建session后,会把关联的session_id通过setCookie添加到http相应头部
    • 浏览器在加载页面时发现响应头部有set-cookie字段,就把这个cookie种到浏览器指定域名下
    • 当下次刷新页面时,发送的请求会带上这条cookie,服务端在接收到后根据这个session_id来识别用户。

    四、localStorage

    • localStorage是H5本地存储web storage特性的API之一,用于将大量数据(最大5M)保存在浏览器中,保存后数据永远存在不会失效过期,除非用js手动清除。

    • 不参与网络传输

    • 一般用于性能优化,可以保存图片、js、css、html模板、大量数据

    五、cookie、sessionStorage、localStorage之间的区别

    相同点:都是存储在浏览器端。并且是同源的

    不同点:

    1、存储大小

    一般浏览器存储cookie最大容量为4kb,很多浏览器都限制一个站点最多保存20个cookie。

    sessionStorage和localStorage虽然也有存储大小的限制,但是要比cookie大得多。

    2、存储有效期:

    cookie保存的数据在过期时间之前一直有效,即使关闭浏览器

    sessionStorage保存的数据用于浏览器的一次会话(session),当会话结束(通常是窗口关闭),数据被清空;

    localStorage保存的数据长期存在,因为localStorage的数据是写入磁盘中,每次读取数据时,实际上是从硬盘驱动器上读取这些字节。

    3、安全性

    cookie中的所有数据在客户端就可以被修改,数据非常容易被伪造,所以对于用户信息来讲,应该将与登录相关的重要信息存储在session中。

    4、性能

    如果cookie中数据字段太多的话,会影响传输效率,此时需要将重要的信息存放在session中。

    但是,session会在一定的时间内保存在服务器上,当访问增多时,会影响服务器的性能。为了减轻服务器的负担,应当使用cookie 

    参考链接:https://www.jianshu.com/p/775b64b3d35f

  • 相关阅读:
    jquery在线手册
    bootstrap学习之路
    实用的cmd命令
    在源代码中插入防止盗版代码片段的方式
    常用的正则表达式
    仿站步骤
    thinkphp 公用函数
    php switch判断一个数所在的范围
    ps学习教程
    九度oj 题目1185:特殊排序
  • 原文地址:https://www.cnblogs.com/qing-5/p/11374713.html
Copyright © 2011-2022 走看看