前端学堂
学有所用

localstorage最大存储空间,import、require区别

面试笔试分类: 工作综合localstorage最大存储空间,import、require区别
0
前端学堂 管理员 asked 3 years ago

1. 变量声明的方式,区别是什么?变量提升?

2. 什么是闭包?举例说明

3. this 如何工作,代表什么

4. localstorage最大存储空间是多少?如果超过了会怎么样呢?

5. const定义的数组可以使用push方法修改吗。

6. import、require区别

1 Answers
0
前端学堂 管理员 answered 11 months ago

什么技术使用浏览器数据存储?
在Firefox中,以下技术利用浏览器数据存储在需要时存储数据。在这种情况下,我们将它们称为“配额客户”:

注意:在Firefox中,Web Storage也将很快开始使用相同的存储管理工具,如本文档中所述。

注意:在隐私浏览模式下,大多数数据存储不被支持。本地存储数据和cookie仍然可用,但它们是短暂的 ——当关闭最后一个隐私浏览窗口时,数据将被删除。

源的“最后访问时间”会更新,当其中任何一个被激活/停用时——所有这些源下的配额客户端的数据会被回收。
在Chrome/Opera中,Quota Management API处理AppCacheIndexedDB,WebSQL和File System API的配额管理。
数据存储的不同类型
即使在相同的浏览器、使用相同的存储方法,仍然存在不同的数据存储方法需要我们搞清楚。这部分我们讨论那些在不同浏览器之间的不同之处。
一般来说,数据存储的的类型主要有以下两种:

  • 持久化存储:这种数据是希望长久保留的,只有的当用户选择清除才会被删除掉(比如,在Firefox中,您可以通过转到“首选项”并使用“ 隐私和安全”>“Cookie和站点数据”下的选项,选择删除所有存储的数据或仅删除所选来源的存储数据)。
  • 临时存储:这种数据不用保存很久,当最近一次使用时Storage limits达到限制大小就会被自动清理掉(LRU policy)。

在Firefox中,当使用持久存储时,会向用户提供一个UI弹出窗口,提醒他们这些数据将持续存在,并询问他们是否对此感到满意。临时数据存储不会引发任何用户提示。
默认的是临时存储;开发人员可以选择使用StorageManager.persist()方法使用持久储存。
数据存储在哪里?
每种存储类型代表一个单独的存储库。这是用户Firefox配置文件下目录的实际映射(其他浏览器可能略有不同):

  • <profile>/storage — 配额管理器维护的主要顶级目录(见下文)
  • <profile>/storage/permanent — 持久数据存储库
  • <profile>/storage/temporary —临时数据存储库
  • <profile>/storage/default — 默认数据存储库

注意:引入Storage API后,“permanent”文件夹可以被认为是过时的;“permanent”文件夹仅存储IndexedDB持久性数据库。模式是“best-effort”还是“persistent”并不重要——数据存储在<profile>/storage/default下。

注意:在Firefox中,可以通过about:support在URL栏中输入,然后按“ 配置文件夹”标题旁边的“在...中显示...”按钮(例如,在Mac OS X上的“在Finder中显示”)来查找您的配置文件文件夹

注意:如果您在存储的数据中查看配置文件,您可能会看到第四个文件夹:persistent。基本上,该persistent文件夹刚刚重命名为permanent以保持升级/迁移更简单。

注意:用户不应在其下添加自己的目录或文件到<profile>/storage。这将导致存储初始化失败;例如,open()触发错误事件。
储存限制
浏览器的最大存储空间是动态的——它取决于您的硬盘大小。 全局限制为可用磁盘空间的50%。 在Firefox中,一个名为Quota Manager的内部浏览器工具会跟踪每个源用尽的磁盘空间,并在必要时删除数据。
因此,如果您的硬盘驱动器是500GB,那么浏览器的总存储容量为250GB。如果超过此范围,则会发起称为源回收的过程,删除整个源的数据,直到存储量再次低于限制。删除源数据没有只删一部分的说法——因为这样可能会导致不一致的问题。
还有另一个限制称为组限制——这被定义为全局限制的20%,但它至少有10 MB,最大为2GB。 每个源都是一组(源组)的一部分。 每个eTLD+1域都有一个组。 例如:

  • mozilla.org——组1,源1
  • www.mozilla.org——组1,源2
  • joe.blogs.mozilla.org——组1,源3
  • firefox.com ——组2,源4

在这个组中,mozilla.orgwww.mozilla.orgjoe.blogs.mozilla.org可以聚合使用最多20%的全局限制。 firefox.com单独最多使用20%。
达到限制后有两种不同的反应:

  • 组限制也称为“硬限制”:它不会触发源回收。
  • 全局限制是一个“软限制”,因为其有可能释放一些空间并且这个操作可能持续。

注意:尽管上面提到了最小组限制,但组限制不能超过全局限制。如果您的内存非常低,全局限制为8 MB,则组限制也将为8 MB。

注意:如果超出组限制,或者如果原因驱逐无法释放足够的空间,浏览器将抛出QuotaExceededError错误。

注意:在Chrome中,自M66以来,软硬存储配额限制已发生变化。 更多信息可以在这里找到。

LRU策略
当可用磁盘空间已满时,配额管理器将根据LRU策略开始清除数据——最近最少使用的源将首先被删除,然后是下一个,直到浏览器不再超过限制。
我们使用临时存储跟踪每个源的“上次访问时间”。 一旦达到临时存储的全局限制(之后会有更多限制),我们将尝试查找所有当前未使用的源(即没有打开选项卡/应用程序的那些来保持打开的数据存储)。 然后根据“上次访问时间”对它们进行排序。 然后删除最近最少使用的源,直到有足够的空间来满足触发此源回收的请求。
参见

 

一分也是爱,觉得好请我喝杯咖啡吧!

支付宝扫一扫打赏

微信扫一扫打赏