关于localStorage是同步还是异步?

512 阅读2分钟

localStorage是同步还是异步?

首先localstorage是一个同步api

1、localstorage有几个特性

  • localStorage 是一个同步 API,因此在处理大量数据时可能会影响性能。
  • localStorage 的数据在浏览器关闭后不会自动清除,除非用户手动清除或通过代码清除。
  • localStorage 的数据是跨会话的,即用户关闭浏览器后重新打开,数据仍然存在。
  • localStorage 的数据是跨窗口的,即在一个窗口中设置的数据,在另一个窗口中也可以访问。
  • localStorage限制容量

同步

在同步的 localStorage 操作期间,由于 js 的单线程性质,整个线程会阻塞,即不会执行其他任何js代码,也不会进行任何渲染操作,直到 localStorage 调用返回

跨窗口

跨窗口可以这么理解:只要这些窗口或标签页属于同一个源(即协议、域名和端口相同),它们就可以共享相同的localStorage数据。(就可以通过localstorage.getItem获取到数据)

跨窗口能访问好处就在于,共享一些公用的信息。

localstorage通常是存储在c盘C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default\Local Storage 目录下下面的,同时也取决于用户的设置。

限制容量

防止滥用:如果没有存储限制,网站可能会滥用 localStorage,存储大量数据在用户的设备上,这可能导致设备存储空间迅速耗尽

性能限制localStorage 的操作是阻塞的。如果网站能够存储大量数据,就会加剧读写操作对页面性能的影响。

存储效率localStorage 存储的是字符串形式的数据,不是为存储大量或结构化数据设计的。当尝试存储过多数据时,效率会降低

IndexedDB

是一种在浏览器中存储大量结构化数据(如JSON对象)的低级数据库的异步API。