20170316111406

本地存储、会话存储和Cookie之间的区别

HTTP协议是服务器和客户端之间平滑通信的最重要协议之一。HTTP协议的主要缺点是它是一个无状态协议,这意味着它不跟踪服务器和客户端的任何类型的响应和请求信息,因此为了解决这个问题,有三种方法可以跟踪有用的信息。在本文中,我们将看到本地存储,会话存储和Cookie,以及web开发人员了解这些术语的重要性。

本地存储:此只读接口属性提供对文档本地存储对象的访问,存储的数据跨浏览器会话存储。与sessionStorage类似,只是本地存储数据在页面会话结束时(即页面关闭时)被清除。当浏览器的最后一个“私有”选项卡关闭时(在私有浏览或匿名会话中加载的文档的本地存储数据),将清除该选项。

DOMStrings是使用UTF-16编码数据的存储格式,每个字符使用两个字节。字符串是从整数键自动生成的,就像它们用于对象一样。存储在LocalStorage中的数据特定于文档中的协议。如果站点通过HTTP加载(例如。,http://example.com),localStorage返回的对象与通过HTTPS加载的对象不同。

本地存储、会话存储和Cookie之间的区别
本地存储、会话存储和Cookie之间的区别

如果文档是从file:URL加载的(也就是说,直接从用户的本地文件系统加载,而不是从服务器加载),行为要求是未定义的,并且在不同的浏览器中可能会有所不同。在所有当前浏览器中,localStorage都会向每个文件返回一个不同的对象:URL。从本质上讲,这似乎是每个URL的一种情况:文件都有自己独特的本地存储区域。

无法保证这种行为,因为如上所述,file:URL要求仍然不明确。因此,浏览器有可能随时改变处理文件的方式。一些浏览器处理它的方式已经发生了变化。

本地存储有4种方法:

setItem()方法–此方法接受两个参数,一个是key,另一个是value。它用于使用键的名称将值存储在特定位置。

setItem(键、值)

getIteam()方法–此方法接受一个作为键的参数,该参数用于获取使用特定键名存储的值。

localStorage.getItem(键)

removietem()方法–此方法用于删除存储在内存中的关于键的值。

localStorage.removeItem(键)

clear()方法–此方法用于清除本地存储中存储的所有值。

localStorage.clear()

什么是会话存储?

可以使用sessionStorage只读属性访问会话存储对象。sessionStorage和localStorage之间的区别在于localStorage数据不会过期,而sessionStorage数据在页面会话结束时被清除。

在浏览器选项卡中加载文档后,将创建唯一的页面会话。页面会话一次仅对一个选项卡有效。页面仅在选项卡或浏览器打开时保存;在页面重新加载和恢复后,它们不会持续存在。每次打开选项卡或窗口时,都会创建一个新会话;这与会话Cookie不同。使用相同URL打开的每个选项卡/窗口都会创建自己的会话存储。复制选项卡时,会将原始选项卡中的会话存储复制到复制的选项卡中。关闭窗口/选项卡将结束会话并清除会话存储对象。

页面的协议确定会话存储中存储的数据。特别是通过HTTP访问的脚本存储的数据(例如,http://abc.com)存储在通过HTTPS访问的同一站点的单独对象中(例如,https://abc.com). DOMString编号是UTF-16 DOMString格式的每个字符两个字节。字符串是从整数键自动生成的,就像它们用于对象一样。

会话存储有4种方法:

setItem()方法–此方法接受两个参数,一个是key,另一个是value。它用于使用键的名称将值存储在特定位置。

sessionStorage.setItem(键,值)

getIteam()方法–此方法接受一个作为键的参数,该参数用于获取使用特定键名存储的值。

sessionStorage.getItem(键)

removietem()方法–此方法用于删除存储在内存中的关于键的值。

sessionStorage.removeItem(键)

clear()方法–此方法用于清除会话存储中存储的所有值

sessionStorage.clear()

Cookie:术语“Cookie”仅指网站的文本信息。为了识别您并根据您的偏好显示结果,当您访问特定网站时,此网站会在您的本地系统中保存一些信息。互联网的历史一直以使用Cookie为标志。网站访问者在访问时向服务器请求一个网页。对服务器的每个请求都是唯一的。同样,如果您访问一百次,服务器会认为每个请求都是唯一的。由于服务器每秒接收许多请求,因此将每个用户的信息存储在服务器上似乎是合乎逻辑且显而易见的。如果您不返回,可能不再需要相同的信息。因此,一个Cookie被发送并存储在您的本地机器上,以唯一地标识您。下次点击时,您将收到来自同一服务器的响应,因为它识别您。几乎每台服务器都使用此Cookie(由于广告,目前存在一些例外情况)。因此,尽管您的系统中可能有许多Cookie,但服务器会识别并分析这些Cookie。推荐阅读:《互联网Cookie是什么以及它如何帮助企业》

当Cookie最初被开发时,它们被用来改善开发人员的体验。考虑访问一个网站以外的语言比你的母语(让我们说英语)。您可以从网站的语言部分选择英语作为您的语言。如果你访问同一个网站五次,可能需要每天切换五次语言。因此,这些详细信息存储在系统上的Cookie中。这确保服务器知道您希望在下次发送请求时以英语查看网站。

区别本地存储,会话存储,和Cookies

本地存储 会话存储Cookies

本地存储容量为5MB/10MB会话存储的存储容量为 5MBCookies 的存储容量为 4KB

由于它不是基于会话的,因此必须通过 javascript 或手动删除它是基于会话的,适用于每个窗口或选项卡。这意味着数据仅在会话期间存储,即直到浏览器(或选项卡)关闭Cookie 会根据每个选项卡和窗口的设置和工作情况而过期

客户端只能读取本地存储客户端只能读取本地存储客户端和服务器都可以读取和写入 Cookie

没有数据传输到服务器没有数据传输到服务器到服务器的数据传输存在

支持它的旧浏览器较少支持它的旧浏览器较少所有浏览器都支持它,包括旧版浏览器

以上就是本地存储、会话存储和cookie之间的区别