localStorage 和 sessionStorage 的区别

125 阅读2分钟

localStoragesessionStorage 都是浏览器提供的客户端存储机制,用于存储键值对数据,但它们在使用场景和数据生命周期上有一些关键区别:

1. 数据的生命周期

  • localStorage:存储的数据没有过期时间,永久存储,即使用户关闭浏览器或重新启动计算机,数据仍然存在,直到主动删除。
  • sessionStorage:数据仅在当前会话(浏览器标签页或窗口)中有效。一旦关闭该标签页或浏览器窗口,数据就会被清除。

2. 作用范围

  • localStorage:跨浏览器标签页和窗口。即同一个域名下的所有标签页和窗口共享同一份 localStorage 数据。
  • sessionStorage:仅限于当前的标签页或窗口。即使同一个网站在不同的标签页中打开,它们的 sessionStorage 也是独立的,不共享数据。

3. 数据大小限制

  • 两者的存储空间一般都有限制,通常为5-10MB,具体大小因浏览器不同而略有差异。但大部分主流浏览器的存储上限差别不大。

4. API 使用方式

两者的 API 非常相似,使用方式几乎一致。以下是常用的 API 操作:

  • setItem:存储数据

    localStorage.setItem('key', 'value');
    sessionStorage.setItem('key', 'value');
    
  • getItem:获取数据

    const value = localStorage.getItem('key');
    const value = sessionStorage.getItem('key');
    
  • removeItem:删除数据

    localStorage.removeItem('key');
    sessionStorage.removeItem('key');
    
  • clear:清除所有数据

    localStorage.clear();
    sessionStorage.clear();
    

5. 应用场景

  • localStorage:适用于需要长时间保存的数据,例如用户设置、偏好(如主题颜色、语言)、登录状态等。
  • sessionStorage:适用于仅在当前会话中需要保存的数据,比如表单暂存、临时会话信息。

总结:

  • localStorage 更适合存储持久化的数据,除非手动清除,否则一直存在。
  • sessionStorage 更适合存储临时数据,浏览器标签页关闭后数据会自动清除。