服务工作者的存储限制是多少?

Nac*_*tha 66 javascript service-worker progressive-web-apps

大多数浏览器为localStorage提供每个域5MB的存储限制.服务工作者是否存在此类内存限制/限制?

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

如果内存大小没有限制,那么设计糟糕的网站可能会使浏览器崩溃吗?

Nac*_*tha 72

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.');
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅以下2篇精彩文章:


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>
});
Run Code Online (Sandbox Code Playgroud)

上述代码可能无法在所有浏览器中使用.(例如:在chrome <48中,可能需要查找webkitPersistentStorage等)

其他有用的信息/资源

  1. 根据Addy Osmani的渐进式Web应用程序离线存储

    Chrome and Opera:您的存储是按来源(而不是每个API).两种存储机制都将存储数据,直到达到浏览器配额.应用可以使用配额管理API检查他们使用的配额(如上所述).

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

    Mobile Safari 最多50MB

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

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

  2. Eiji Kitamura 在移动浏览器使用配额的更详细指南.

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

  • 在API和Opera之间共享存储空间可能只适用于API.查看Addy Osmani帖子的常见问题部分:https://medium.com/dev-channel/offline-storage-for-progressive-web-apps-70d52695513c#.8acehngnq (2认同)

Xan*_*hir 8

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

请注意,由于任何原因,SW规范非常明确地表示浏览器可以随时终止并重启SW.(如果DevTools在页面上打开,Chrome会不断地为页面杀死SW,以鼓励您采用良好的做法.)

  • 我相信@Nachiketha shu正在谈论存储空间,而不是易失性内存使用. (9认同)