服务辅助角色的存储限制是多少
What is the storage limit for a service worker?
大多数浏览器都提供localStorage,每个域的存储限制为5MB。对于服务工作进程,是否存在此类内存限制/约束?
我知道 Web 工作者(服务工作者所基于的(没有这样的限制。但是 Web Worker 并不完全用于资产缓存,而是更多地用于处理(因此 CPU 是那里的主要关注点(。
如果内存大小没有限制,设计不良的网站会不会使浏览器崩溃?
更新 Jan 15 2018
Storage API 的 StorageManager 接口正在成为所有与存储相关的 API 查询的标准。如 @miguel-lattuada(-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 篇精彩文章:
- MDN Web 文档 - 存储 API
- 谷歌开发者:估计可用存储空间
三月16 2017(保留仅供参考/历史(
最近我看到了这篇文章:离线食谱,其中指出如下:
您的原点被赋予一定数量的自由空间来做它想做的事情。该可用空间在所有源存储之间共享:LocalStorage,IndexedDB,Filesystem,当然还有Caches。
您获得的数量不是规格的,它会根据设备和存储条件而有所不同。您可以通过以下方式了解您有多少:
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等(
其他有用的信息/资源
根据 Progressive Web 应用程序的离线存储 作者:Addy Osmani
Chrome and Opera
:您的存储是按源(而不是按 API(存储的。这两种存储机制都将存储数据,直到达到浏览器配额。应用可以通过配额管理 API 检查它们使用了多少配额(如上所述(。Firefox
没有限制,但会在存储 50MB 数据后提示Mobile Safari
最大 50MBDesktop 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
测试页面在这里 https://thimbleprojects.org/startpolymer/361372/
我不是 100% 确定,但我认为您完全受到客户端计算机上可用内容的限制。如,没有固定的上限
如果有人正在运行一台机器,并且浏览器是唯一活跃的应用程序,那么您很可能有足够的存储空间可用
然而,如果它是一台旧的有限机器,勉强可以继续前进;你就会很少。
这完全取决于你真正想做什么。您应该只真正使用服务工作者来存储对页面/应用程序工作至关重要的东西
- 将作用域存储在JSON中
- 使用javascript存储变量的最安全方式
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何有效地将游戏数据存储在URL查询字符串中
- Ember.js-接口状态应该存储在哪里
- 如何解雇“;铁局部存储负载”;事件
- 本地存储中的字符串到字节数组转换
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 从jQuery调用存储在Variable中的函数
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 将数据存储在javascript数组中以供进一步使用
- 在 .NET 和 JavaScript 中存储一个字符需要多少字节
- 服务辅助角色的存储限制是多少
- angularjs范围内可以存储的最大数据大小是多少?具有重作用域的应用程序的性能
- 每个源的浏览器缓存中服务工作者可以存储多少数据
- 服务辅助角色的缓存存储的大小限制是多少
- “可接受”的最低限度是多少?间隔循环中本地存储的延迟(用于“自动保存”)
- 一个Meteor.com托管的应用程序有多少数据库存储空间