大多数浏览器为localStorage提供每个域5MB的存储限制。对于服务人员是否存在这样的内存限制/约束?
我知道网络工作者(服务工作者所基于的工作者)没有这种限制。但是,Web Workers并不是完全用于资产缓存,而是更多地用于资产处理(因此,CPU是此处的主要考虑因素)。
如果对内存大小没有限制,那么设计不当的网站会导致浏览器崩溃吗?
大多数浏览器为localStorage提供每个域5MB的存储限制。对于服务人员是否存在这样的内存限制/约束?
我知道网络工作者(服务工作者所基于的工作者)没有这种限制。但是,Web Workers并不是完全用于资产缓存,而是更多地用于资产处理(因此,CPU是此处的主要考虑因素)。
如果对内存大小没有限制,那么设计不当的网站会导致浏览器崩溃吗?
Answers:
更新2018年1月15日
Storage API的StorageManager接口正在成为所有与存储相关的api查询的标准。如@ miguel-lattuada所述,估计API将提供对使用Web应用程序的可用存储的存储的估计。另外,请注意QuotaExceededError异常,该异常将帮助我们处理错误情况。
例如代码:
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.');
}
有关更多信息,请参考以下2篇出色的文章:
2017年3月16日(保留仅供参考/历史)
最近我碰到了这篇文章:offline-cookbook,状态如下:
您的来源有一定的可用空间来执行其所需的操作。这个自由空间所有原来的存储共享:本地存储,索引资料,文件系统,当然缓存。
未指定您获得的数量,具体取决于设备和存储条件。您可以通过以下方式了解您的收入:
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中,可能必须寻找webkitPersistentStorage等)
其他有用的信息/资源
根据Addy Osmani的渐进式Web应用程序的脱机存储
在Chrome and Opera
:您的存储是按来源(而不是按API)进行的。两种存储机制都将存储数据,直到达到浏览器配额为止。应用程序可以检查配额管理API使用了多少配额(如上所述)。
Firefox
没有限制,但在存储50MB数据后会提示
Mobile Safari
最大50MB
Desktop Safari
无限(5MB后提示)
IE10+
最大速度为250MB,提示速度为10MB
目前,这些是针对我的问题找到的最相关的文章/解决方案。如果有人知道更好的文章或规格,请分享。
没有明确的限制。所有现代的浏览器都是多进程或类似的浏览器,因此设计不良的页面(或软件)不会比崩溃本身更糟糕。
请注意,SW规范非常明确地表明浏览器可以出于任何原因随时终止并重新启动SW。(如果在页面上打开了DevTools,则Chrome会故意杀死该页面的软件,以鼓励您采用良好的做法。)
在最新的浏览器上,您可以使用StorageManager,它是浏览器存储新标准的实现,请查看此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