What is the storage limit for a service worker?

前端 未结 5 1977
耶瑟儿~
耶瑟儿~ 2020-11-28 03:59

Most of the browsers provide localStorage with the storage limit of 5MB per domain. Are there such memory limits/constraints with respect to service workers?

I know

5条回答
  •  春和景丽
    2020-11-28 04:25

    Update Jan 15 2018

    The StorageManager interface of Storage API is becoming a standard for all storage related api queries. As mentioned by @miguel-lattuada, the estimate API would provide an estimate of the storage used a web app the available storage. Also, note the QuotaExceededError exception which would help us in handling error scenarios.

    eg code:

    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.');
    }

    For more info, refer the following 2 great articles:

    • MDN Web docs - Storage API
    • Google Developers: Estimating Available Storage Space

    March 16 2017 (keeping it just for reference/history)

    Recently I came across this article: offline-cookbook which states as below:

    Your origin is given a certain amount of free space to do what it wants with. That free space is shared between all origin storage: LocalStorage, IndexedDB, Filesystem, and of course Caches.

    The amount you get isn't spec'd, it will differ depending on device and storage conditions. You can find out how much you've got via:

    navigator.storageQuota.queryInfo("temporary").then(function(info) {
       console.log(info.quota);
       // Result: 
       console.log(info.usage);
       // Result: 
    });
    

    The above code might not work in all the browsers. (for eg: in chrome<48 one might have to look for webkitPersistentStorage etc)

    Other useful info/resources

    1. As per Offline Storage for Progressive Web Apps by Addy Osmani

      In Chrome and Opera: Your storage is per origin (rather than per API). Both storage mechanisms will store data until the browser quota is reached. Apps can check how much quota they’re using with the Quota Management API (as described above).

      Firefox no limits, but will prompt after 50MB data stored

      Mobile Safari 50MB max

      Desktop Safari unlimited (prompts after 5MB)

      IE10+ maxes at 250MB and prompts at 10MB

    2. A more detailed guide on Working with quota on mobile browsers by Eiji Kitamura.

    For now these are the most relevant articles/solutions found for my problem. If anyone knows some better article or specifications please share.

提交回复
热议问题