服务员的存储限额是多少?

大多数浏览器提供 localStorage,每个域的存储限制为5 MB。 对于服务工作者是否存在这样的内存限制?

我知道 Web 工作者(服务工作者所基于的)没有这样的限制。但是 Web Workers 并不完全用于资产缓存,而是更多地用于处理(因此 CPU 是主要关注点)。

如果内存大小没有限制,一个设计糟糕的网站会让浏览器崩溃吗?

28667 次浏览

我不是100% 确定,但我认为你完全受限于客户端机器上可用的东西。也就是说,没有固定的上限

如果某人正在运行一台巨大的机器,而浏览器是唯一活动的应用程序,那么您很可能有大量的可用存储空间

然而,如果它是一台旧的有限的机器,几乎没有运转; 你会有很少

这完全取决于你到底想做什么。您应该只使用服务工作者来存储对页面/应用程序工作至关重要的内容

没有明确的限制。所有现代浏览器都是多进程或类似的,因此设计糟糕的页面(或 SW)不会比崩溃本身更糟糕。

请注意,SW 规范非常明确地规定了浏览器可以在任何时候、出于任何原因杀死并重新启动 SW。(如果 DevTools 在页面上打开,Chrome 会有意不断杀死页面上的 SWs,以鼓励你采用好的做法。)

2018年1月15日更新

StorageAPI 的 仓库经理接口正在成为所有与存储相关的 API 查询的标准。正如 @ Miguel-lattuada所提到的,估计空气污染指数将提供一个使用 Web 应用程序的可用存储空间的估计值。另外,请注意 错误异常,它将帮助我们处理错误场景。

密码:

if ('storage' in navigator && 'estimate' in navigator.storage) {
navigator.storage.estimate().then(({usage, quota}) => {
console.log(`Using ${usage} out of ${quota} bytes.`);
}).catch(error => {
console.error('Loading storage estimate failed:');
console.log(error.stack);
});
} else {
console.error('navigator.storage.estimate API unavailable.');
}

欲了解更多信息,请参考以下两篇伟大的文章:


2017年3月16日(仅供参考/历史使用)

最近,我偶然看到了这篇文章: 脱机食谱,内容如下:

这个 所有原始存储之间共享空闲空间: 本地存储,索引数据库,文件系统,当然还有缓存。

你得到的数额不是特别的,它会根据设备和存储条件的不同而有所不同。你可以通过以下方式了解你拥有了多少:

navigator.storageQuota.queryInfo("temporary").then(function(info) {
console.log(info.quota);
// Result: <quota in bytes>
console.log(info.usage);
// Result: <used data in bytes>
});

上面的代码 可能不适用于所有的浏览器。(例如: 在 chrome < 48中,可能需要查找 webkitPersisentStorage 等)

其他有用的信息/资源

  1. 作者: Addy Osmani

    Chrome and Opera中: 您的存储是每个原点(而不是每个 API)。这两种存储机制都将存储数据,直到达到浏览器配额为止。应用程序可以通过配额管理 API 检查它们使用了多少配额(如上所述)。

    Firefox没有限制,但会提示后50 MB 的数据存储

    Mobile Safari最大50 MB

    Desktop Safari无限制(5 MB 后提示)

    IE10+最大为250MB,提示为10MB

  2. 更详细的指南 在移动浏览器上使用配额的北村英次。

目前,这些是针对我的问题找到的最相关的文章/解决方案。如果有人知道一些更好的文章或规格,请分享。

在最新的浏览器中,你可以使用 仓库经理,这是一个新的浏览器存储标准的实现,看看 这个 mozilla 文章。

let _storageStats = await navigator.storage.estimate();
console.log(_storageStats);
/*
Will prompt something like this
{quota: 15946471833, usage: 682}
Which is a representation of quota/usage in bytes
As you can see I get an insane quota of almost 16 GB
*/

关于 navigator.storage.estimate()navigator.webkitTemporaryStorage.queryUsageAndQuota()的更多信息在这里 Https://developers.google.com/web/updates/2017/08/estimating-available-storage-space

测试页面在这里 https://thimbleprojects.org/startpolymer/361372/