web-dev-qa-db-fra.com

Quelle est la limite de stockage pour un technicien?

La plupart des navigateurs fournissent à localStorage une limite de stockage de 5 Mo par domaine. Existe-t-il de telles limites/contraintes de mémoire vis-à-vis des travailleurs des services?

Je sais que les travailleurs Web (sur lesquels les travailleurs des services sont basés) n'ont pas de telles limitations. Toutefois, les travailleurs Web ne sont pas utilisés exactement pour la mise en cache des actifs, mais plutôt pour le traitement (le processeur est donc la principale préoccupation).

Si la taille de la mémoire n’est pas limitée, un site Web mal conçu peut-il bloquer le navigateur?

63
Nachiketha

Mis à jour le 15 janvier 2018

L’interface StorageManager de l’API de stockage est en train de devenir un standard pour toutes les requêtes API liées au stockage. Comme mentionné par @ miguel-lattuada , le API d'estimation fournirait une estimation de la mémoire utilisée par une application Web par la mémoire disponible. Notez également l'exception QuotaExceededError qui nous aiderait à gérer les scénarios d'erreur.

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

Pour plus d'informations, reportez-vous aux 2 excellents articles suivants:


16 mars 2017 (le gardant juste pour référence/historique)

Je suis récemment tombé sur cet article: offline-cookbook qui se lit comme suit:

Votre origine dispose d’un certain espace libre pour faire ce qu’elle veut. Cet espace libre est partagé entre tous les supports de stockage Origin : LocalStorage, IndexedDB, Filesystem et, bien sûr, des caches.

Le montant que vous obtenez n'est pas spécifié , il diffère en fonction du périphérique et des conditions de stockage. Vous pouvez savoir combien vous avez via:

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

Le code ci-dessus pourrait ne pas fonctionner dans tous les navigateurs . (par exemple: en chrome <48, il faudra peut-être rechercher webkitPersistentStorage, etc.)

Autres informations/ressources utiles

  1. Selon stockage hors ligne pour les applications Web progressives par Addy Osmani

    Dans Chrome and Opera: Votre stockage est par origine (plutôt que par API). Les deux mécanismes de stockage stockent les données jusqu'à ce que le quota du navigateur soit atteint. Les applications peuvent vérifier le quota qu'elles utilisent avec l'API de gestion de quota (comme décrit ci-dessus).

    Firefox pas de limite, mais l'invite sera stockée après 50 Mo de données

    Mobile Safari 50 Mo maximum

    Desktop Safari illimité (invite après 5 Mo)

    IE10+ maximum à 250 Mo et invite à 10 Mo

  2. Un guide plus détaillé sur tilisation de quotas sur les navigateurs mobiles par Eiji Kitamura.

Pour l'instant ce sont les articles/solutions les plus pertinents trouvés pour mon problème. Si quelqu'un connaît de meilleurs articles ou spécifications, veuillez les partager.

68
Nachiketha

Il n'y a pas de limite explicite. Tous les navigateurs modernes sont multi-processus ou similaires, donc une page mal conçue (ou un logiciel) ne fera rien de pire que de se planter.

Notez que la spécification du logiciel est très explicite sur le fait que le navigateur peut tuer et redémarrer le logiciel à tout moment, pour quelque raison que ce soit. (Si DevTools est ouvert sur une page, Chrome tue délibérément des logiciels confidentiels pour la page, afin de vous encourager à adopter de bonnes pratiques.)

8
Xanthir

Plus d'informations sur navigator.storage.estimate() et navigator.webkitTemporaryStorage.queryUsageAndQuota() est ici https://developers.google.com/web/updates/2017/08/fr/estimating-available-storage-space

La page de test est ici https://thimbleprojects.org/startpolymer/361372/

2
Josef Ježek

Sur les navigateurs les plus récents, vous pouvez utiliser StorageManager , qui est une implémentation d'une nouvelle norme de stockage pour les navigateurs. Découvrez this article 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
*/
1
Miguel Lattuada

Je ne suis pas certain à 100%, mais je pense que vous êtes entièrement limité par ce qui est disponible sur l'ordinateur client. Comme dans, il n'y a pas de limite supérieure fixe

Si quelqu'un utilisait une machine et que le navigateur était la seule application active, vous disposeriez probablement de beaucoup d'espace de stockage.

Cependant, s’il s’agissait d’une vieille machine limitée, elle ne s’accommode guère; tu aurais très peu

Cela dépend entièrement de ce que vous essayez vraiment de faire. Vous ne devriez vraiment utiliser que des employés de service pour stocker des éléments essentiels au fonctionnement de votre page/application.

0
Ryuu