你知道 Web 存储中 LocalStorage、SessionStorage 和 Cookie 的区别吗?

职场   2024-11-03 11:34   浙江  

在现代 web 开发中,管理客户端数据俨然成为一项基本技能。管理数据首先涉及的是储存数据。

开发人员通常依靠的是localStoragesessionStorageCookie在用户的浏览器中存储数据。

虽然这三种机制的用途相似,但它们在容量、持久性和使用案例方面存在着明显差异。今天,我们将通过示例探讨这些差异,帮助大家更妥善地储存数据。

1. localStorage:持久存储

  • 目的:localStorage旨在将数据存储在客户端,即使在浏览器关闭后,这些数据也依然持续存在。

    所以对于需要跨多个会话保留的数据,这是一个很好的选择。

  • 容量:localStorage提供大量存储空间,通常每个域高达 10MB,对于大多数应用程序来说完全足够了。

  • 持久性:在用户或者应用程序明确删除之前,存储在localStorage中的数据将一直可用。

    所以非常适合存储用户首选项,例如主题设置,以便下次、下下次访问网站也持续存在。

示例:假设你开发了一个同时提供lightdark模式的 web 应用程序,那么建议使用localStorage保存用户的首选项,以便下次访问时,站点自动加载用户选择的模式。

2. sessionStorage:临时存储

  • 目的:sessionStorage也会在客户端存储数据,但仅限于页面会话的持续时间。一旦用户关闭浏览器选项卡或窗口,将清除数据。

  • 容量:sessionStorage为每个域提供大约 5MB 的存储空间。尽管容量比localStorage小,但存储临时数据通常足够了。

  • 持久性:sessionStoragelocalStorage之间的主要区别在于持久性。sessionStorage数据仅在页面会话期间可用,因此适合存储不需要在当前会话之后保留的临时数据。

示例:假设有一个多步骤的表单,用户使用的时候需要跨多个页面输入数据。

那么我们可以使用sessionStorage在用户完成所有步骤之前,临时存储表单数据,以防用户意外重新加载页面导致丢失进度。

// Save form data temporarily in sessionStorage
sessionStorage.setItem('step1Data'JSON.stringify({ name'John Doe'age30 }));

// Retrieve the saved data
const step1Data = JSON.parse(sessionStorage.getItem('step1Data'));
console.log(step1Data); // Output: { name: 'John Doe', age: 30 }

3. Cookie:能与服务器交互的小型持久存储

  • 目的:Cookie用于存储需要在会话之间持续存在的小块数据,并且可以通过 HTTP 请求发送到服务器。

    常用于跟踪用户会话、存储身份验证令牌和记住用户设置。

  • 容量:与localStoragesessionStorage相比,Cookie的容量要小得多。每个Cookie的容量限制为 4KB,但是可以存储多个Cookie

  • 持久性:Cookie的过期时间是可配置的,可以在会话结束时过期,也可以在指定期间持续。

    这种灵活性使cookie既可用于短期存储,也可用于长期存储。

示例:Cookie的常见用途是存储用户的登录令牌,允许用户在会话之间保持登录状态,不需要每次访问网站都需要重新输入凭据。

// Set a cookie with an expiration date
document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";

// Retrieve the cookie value
const cookies = document.cookie.split(';').reduce((acc, cookie) => {
    const [key, value] = cookie.trim().split('=');
    acc[key] = value;
    return acc;
}, {});
console.log(cookies.username); // Output: JohnDoe

何时使用何种存储机制

  • localStorage:用于当你需要存储大量数据,同时这些数据在多个会话中持续存在并且不敏感(例如,用户首选项、非敏感应用程序状态)的时候。
  • sessionStorage:非常适合只应在用户会话期间保留的临时数据(例如,单会话表单数据、临时状态)。
  • Cookie:最适合存储需要通过 HTTP 请求发送到服务器或需要特定过期时间的小块数据(例如,身份验证令牌、需要与服务器交互的用户首选项)。

结论

俗话说,知己知彼,百战不殆。

只有了解了localStoragesessionStorageCookie之间的区别,我们才能在 web 应用程序中得心应手地做出正确的选择,知道何时使用何种存储机制,从而有助于我们构建高效又用户友好的应用程序。

掌握了这些工具,在下一个项目中,我们便能够更好地管理客户端数据存储,确保用户获得美好的无缝体验。赞。

END


热门推荐

当对象遇上代码:JavaScript 中的浪漫邂逅

JavaScript 性能优化全家桶:6 个方面 9 点建议

3.40秒到231.84毫秒,我的前端性能瓶颈分析全流程

2024 年前端框架大更新

前端新世界
关注前端技术,分享互联网热点
 最新文章