web-dev-qa-db-fra.com

Limites de stockage sur Chrome

Quelle est la limite logicielle (à laquelle l'utilisateur doit autoriser le dépassement)? Quelle est la limite maximale (maximum autorisé).

33
Clay Nichols

Attention - ces informations sont obsolètes - voir autre réponse ci-dessous.

Chrome a une limite souple de 5 Mo avant d'atteindre un QUOTA_ERR . Voici une référence MDN à ce fait.

Le spec mentionne un QuotaExceededError mais ne semble rien dire quand il doit être lancé.

QuotaExceededError L'opération a échoué car il n'y avait pas assez d'espace de stockage restant, ou le quota de stockage a été atteint et l'utilisateur a refusé de donner plus d'espace à la base de données.

Je n'ai pas entendu parler d'une limite stricte et n'en ai pas atteint une dans mon propre développement. La performance devrait aller assez loin au sud avant de l'atteindre.

4
buley

La règle générale est de 6% (modifier 2015-juil: 10%) de l'espace disponible sur le disque dur de l'utilisateur, moins si votre Origin utilise websql, appcache ou l'api du système de fichiers. Le document MDN mentionnant 5 Mo était obsolète et a été mis à jour. Les détails sanglants sur la politique actuelle sont ici: https://developer.chrome.com/apps/offline_storage

Notez quelques subtilités gênantes:

  1. Il n'y a pas de stockage PERSISTANT pour indexeddb, seuls les éléments du lien ci-dessus concernant TEMPORARY s'appliquent.
  2. Une fois que votre origine a épuisé sa part de la piscine,les transactions indexeddb seront inutilement abandonnées sans véritable indication pourquoi. À l'heure actuelle, la seule façon de déterminer que le manque de quota est la cause est d'utiliser queryUsageAndQuota pour vérifier la quantité d'espace restant. Espérons qu'une future version de chrome remplira bientôt correctement IDBTransaction.error dans ces cas. Edit: chrome 26 remplit désormais correctement IDBTransaction.error avec QuotaExceededError.
  3. Il n'y a actuellement aucune API pour demander plus d'espace de stockage pour indexeddb.
37
dgrogan

Vérifiez le quota avec le code suivant dans chrome> outils de développement (F12)> console

// Request storage usage and capacity left
window.webkitStorageInfo.queryUsageAndQuota(webkitStorageInfo.TEMPORARY, 
//the type can be either TEMPORARY or PERSISTENT
function(used, remaining) {
  console.log("Used quota: " + used + ", remaining quota: " + remaining);
}, function(e) {
  console.log('Error', e); 
} );
13
Ankit_Shah55

IndexedDB reçoit de la mémoire du stockage "TEMPORAIRE" de Google Chrome. Le stockage temporaire sur Chrome a un quota par défaut de 50% de l'espace disque disponible, dont 20% est disponible pour votre application hors ligne. Demander plus de quota par rapport au stockage temporaire ne fait rien.

Sur la base de ce qui précède, les réponses à vos questions seraient:

  1. IndexedDB (sur Chrome) peut utiliser le stockage sans le demander. (Sachant qu'il est alloué à partir du stockage temporaire)
  2. Demander plus que la limite de stockage TEMPORAIRE (20% des 50% disponibles, décrits ci-dessus) n'allouera rien.

Vous pouvez utiliser l'outil Browser Storage Abuser (cité dans l'article this HTML5Rocks qui a documenté les résultats pour différents navigateurs) pour déterminer le stockage temporaire disponible sur le Chrome vous courez.

Je n'ai pas assez SO réputation pour publier plus de liens mais l'article HTML5Rocks ci-dessus sur la recherche de quotas contient suffisamment de détails pour vous aider à identifier le type de stockage approprié (TEMPORAIRE ou PERSISTANT) et le mécanisme de stockage approprié ( si vous n'avez pas nécessairement mis à zéro sur IndexedDB) comme cela peut convenir à votre application.

5
Shalabh Vyas

La question porte sur Chrome et IndexedDB balisés. Et je suppose qu'il s'agit de sites Web, et non Chrome extensions ou applications (qui permettent un stockage illimité pour IndexedDB).

Pour les sites Web, IndexedDB est une API pour Chrome stockage temporaire ( source ). La question porte donc sur le quota de stockage temporaire dans Chrome .

Dans Chrome 67, le comportement de quota a changé, et ce n'est pas vraiment documenté sauf dans n rapport de bogue . Pris ensemble, le comportement de quota actuel est:

  • En Chrome Mode normal

    • Pour API hors ligne (Cache d'application, système de fichiers, IndexedDB, WebSQL):

      Si la valeur "devrait rester disponible" est atteinte, le quota pour une origine ("site") sera nul. La valeur "devrait rester disponible" se rapporte à l'espace à garder libre sur le stockage de masse. Depuis Chrome 67, il s'agit de la valeur inférieure de "2 Gio" et de "10% de la capacité totale de stockage de masse" ( source ). Une fois cette limite atteinte, les écritures supplémentaires dans le stockage temporaire échoueront, mais les données existantes dans le stockage temporaire ne seront pas supprimées.

      Si la valeur "devrait rester disponible" n'est pas encore atteinte, le quota sera de 20% du pool partagé ( source ). Cela signifie (probablement) "20% de toutes les données du stockage temporaire déjà enregistrées par Chrome, plus toutes les données que Chrome peut enregistrer dans le stockage local sans atteindre la valeur" devrait rester disponible ").

    • Pour API de stockage Web (LocalStorage, SessionStorage,…): 5 Mio fixes ( source ); Je ne sais pas si cela est affecté par la limite "devrait rester disponible" documentée ci-dessus.

  • En Chrome Mode navigation privée

    • Pour API hors ligne (Cache d'application, système de fichiers, IndexedDB, WebSQL): env. 100 Mio fixe, quel que soit l'espace libre sur le stockage de masse ( source ).
    • Pour API de stockage Web (LocalStorage, SessionStorage,…): 5 Mio fixes ( source ).
0
tanius