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

2024 年 8 月 31 日 | 阅读 6 分钟

在服务器和客户端之间进行有效通信的最关键协议之一是 HTTP 协议。HTTP 协议的一个根本缺点是它是一个 无状态协议,这意味着它不跟踪服务器或客户端之间关于请求和响应的任何信息。因此,有三种方法可以跟踪重要信息来解决此问题。本文将解释 本地存储、会话存储Cookie 之间的区别以及它们对 Web 开发人员的重要性。

本地存储

此只读接口属性提供对文档本地存储对象的访问;数据会跨浏览器会话保存。与 sessionStorage 类似,不同之处在于 sessionStorage 数据会在页面会话过期或浏览器窗口关闭时删除。当浏览器最后一个 “隐私” 标签页关闭时,它会被清除(在隐私浏览或隐身会话中加载的文档的 localStorage 数据)。

DOMStrings 是使用 双字节 UTF-16 编码标准对数据进行编码的存储格式。与对象一样,字符串会从整数键自动创建。在文档中的一个协议与保存在 LocalStorage 中的数据相关。当使用 HTTP 加载网站时,LocalStorage 会提供一个与使用 HTTPS 加载的网站不同的对象(例如 https://abc.com)。

当文档从文件加载时(即直接从用户本地文件系统加载而不是从服务器加载)的行为先决条件是未知的,并且可能在不同的浏览器之间有所不同。在所有当前浏览器中,localStorage 似乎为每个文件:URL 返回一个单独的对象。本质上,似乎每个 URL:文件都有其自己的本地存储空间。

由于上述模糊的文件:URL 的行为无法保证。因此,浏览器在处理文件时可能会改变其方式。一些浏览器处理此问题的方式已随时间而改变。

本地存储有 4 种方法

setItem() 方法 -

此方法需要两个参数:一个 和一个 。它用于将值与特定位置的键名一起存储。

localStorage.setItem(key, value)

getItem 方法

此方法仅需要 键参数,用于检索与特定键名 关联 的值。

localStorage.getItem(key)

removeItem() 方法 -

可以使用此方法 删除 存储在内存中并引用键的值。

localStorage.removeItem(key)

clear() 方法 -

可以使用此过程 清除 本地存储中保存的所有值。

localStorage.clear()

会话存储:它是什么?

只读的 sessionStorage 属性提供对 Session Storage 对象 的访问。与会话存储数据在页面会话结束时删除不同,本地存储数据永不过期,这是两种存储类型的区别。

一旦文档在浏览器标签页上加载,就会生成一个独立的页面会话。页面会话一次只能有一个打开的标签页。页面重新加载和恢复后,页面仅在标签页或浏览器打开期间保存。与会话 Cookie 不同,每次打开标签页或窗口时都会启动一个新会话。同一 URL 打开多个标签页或窗口,每个标签页或窗口都会产生自己的 sessionStorage。当您复制一个标签页时,原始标签页的 sessionStorage 会被复制到复制的标签页。关闭窗口或标签页会结束会话并删除所有 sessionStorage 对象。

sessionStorage 中保存的信息取决于页面的协议。特别是,通过 HTTP(例如 http://abc.com)查看的脚本存储的信息与通过 HTTPS(例如 https://abc.com)访问的同一网站的数据存储在不同的对象中。在 UTF-16 DOMString 格式中,DOMString 数字的字符大小为两个字节。与对象一样,字符串会从整数键自动创建。

有 4 种存储会话的方法

setItem() 方法 -

此方法需要两个参数:一个 和一个 。它用于将值与特定位置的键名一起存储。

sessionStorage.setItem(key, value)

getItem() 方法 -

此方法仅需要 键参数,用于检索与特定键名关联的值。

sessionStorage.getItem(key)

removeItem() 方法 -

可以使用此方法删除存储在内存中并引用键的值。

sessionStorage.removeItem(key)

clear() 方法 -

此过程用于从会话存储中删除所有值。

sessionStorage.clear()

Cookie

“cookie” 一词仅指关于网站的 文本数据。当您访问特定网站时,该网站会在您的本地系统中保留某些信息,以识别您并根据您的偏好为您提供结果。Cookie 的使用一直是互联网历史的一部分。当有人访问网站时,他们会从服务器请求一个网页。发送到服务器的每个请求都是独立的。同样,如果您访问一百次,服务器会将每次访问识别为独立的请求。考虑到服务器每秒收到的请求量,在服务器上存储每个用户的信息似乎不合理且不清晰。如果您不再返回,则可能不再需要相同的信息。

为了唯一地识别您,Cookie 会被发送并保存在您的本地计算机上。下次您联系服务器时,它会做出响应,因为它已识别出您。几乎所有服务器都使用此 Cookie(今天有一些例外,因为广告)。因此,即使您的计算机上有很多 Cookie,服务器仍会识别并检查它们。

最初,Cookie 的创建是为了增强开发人员的体验。考虑浏览非母语网站(例如 英语)。您可以从网站的语言菜单中选择英语作为您的语言。如果您一天访问同一网站五次,则可能需要五次切换语言。因此,会在您的计算机上放置一个 Cookie,其中包含这些事实。它确保您下次发送请求时,服务器将知道您希望以英语访问该网站。在这种情况下,Cookie 很重要。今天的 Cookie 比上句话中的 Cookie 小得多。

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

本地存储SessionCookies
本地存储的存储容量为 5MB10MB会话存储的存储容量为 5MBCookie 的存储容量为 4 KB
由于它不是基于会话的,因此只能通过手动或使用 JavaScript 来清除。它按窗口或标签页工作,并且是基于会话的。数据仅在此期间保存,直到会话结束,或者直到浏览器(或标签页)关闭。根据每个标签页和窗口的设置和操作,Cookie 会过期。
只有客户端可以读取本地存储。只有客户端可以读取会话存储。客户端和服务器都可以读取和写入 Cookie。
不会将信息发送到服务器。不会将信息发送到服务器。存在数据传输到服务器。
较旧的浏览器支持有限。较旧的浏览器支持有限。所有浏览器,包括较旧的浏览器,都支持它。
它在存储用户偏好或设置等数据方面非常有用,这些数据即使在用户关闭浏览器后也希望保留。使用会话存储可以存储敏感数据,包括登录密码。Cookie 通常用于存储非敏感数据,例如用户偏好。
本地存储 是 HTML5 的一项全新功能。“会话存储” 是 HTML5 的一项全新功能。Cookie 是最知名和最古老(基于 HTML4)的方法。

结论

本教程涵盖了本地存储、会话存储和 Cookie 之间的区别。已经看到了从这些存储中存储和检索数据的各种技术。本地存储是最新的方法。可以存储更大的数据(10MB)。但是,关闭浏览器时数据不会被清除。与 Cookie 类似,会话存储仅为当前会话保存信息。根据此,当用户退出浏览器时,数据将被清除。Cookie 是最古老、最知名的机制。它们易于使用,并具有强大的浏览器支持。但是,它们只能存储 4KB 的信息,并且通常用于存储非敏感信息,例如用户偏好。


下一主题区别