web-dev-qa-db-fra.com

Que se passe-t-il lorsque localStorage est plein?

J'ai trouvé articles concernant le comportement du cache, donc je ne peux que supposer que ce n'est pas très différent mais je voulais m'en assurer.

J'ai lu que la plupart des navigateurs ont 5 Mo (donner ou prendre) pour localStorage et j'ai été intéressé par quel serait le comportement des navigateurs?

Je comprends que chaque navigateur agit différemment, mais je suis surtout intéressé par Safari, Chrome et Firefox (car ce sont ceux que je considère comme des navigateurs).

  • Les navigateurs mentionnés ci-dessus supprimeront-ils les données de mon site Web ou choisiront-ils "le plus ancien" ou quelque chose du genre?
  • Mon article sera-t-il enregistré dans ce cas?

Et le plus important:

  • Disons que j'abuse le localStorage et mon site Web en essayant de tout utiliser, et dans la même page je le remplis et j'essaye d'en économiser plus, vais-je recevoir un avertissement [ ~ # ~] et [~ # ~] le getItem renverra-t-il null lorsque cela se produit ou est-il en quelque sorte enregistré en mémoire?

  • Que se passe-t-il si j'essaie d'enregistrer un élément plus grand que la taille de localStorage?

    Répondu: une réponse peut être trouvée ici

  • Le même comportement exact peut-il être attendu de sessionStorage qui devrait être le même?

Je sais que c'est beaucoup de questions mais j'essaie de comprendre tout ce qui est lié au sujet, je serais reconnaissant pour n'importe quelle partie de la question à laquelle vous pouvez répondre.

Cordialement.

58
eric.itzhak

Tout d'abord, quelques ressources utiles:

En réponse à votre question, les navigateurs de bureau ont généralement un quota local de stockage maximal initial de 5 Mo par domaine. Cela peut être ajusté par l'utilisateur dans certains cas:

  • Opera: opera: config -> Quota de domaine pour localStorage
  • Firefox: à propos de: config -> dom.storage.default_quota

Dans Chrome, il ne semble pas y avoir de moyen pour l'utilisateur d'ajuster ce paramètre, bien que comme Opera, les données localStorage peuvent être modifiées directement par domaine à l'aide des outils de développement.

Lorsque vous essayez de stocker des données dans localStorage, le navigateur vérifie s'il reste suffisamment d'espace pour le domaine actuel. Si oui:

  • Les données sont stockées, écrasant les valeurs si une clé identique existe déjà.

Sinon:

  • Les données ne sont pas stockées et aucune donnée existante n'est remplacée.
  • Une exception QUOTA_EXCEEDED_ERR Est levée.

Dans ce cas, getItem(key) renverra la dernière valeur qui a été correctement stockée, le cas échéant.

(Opera est légèrement différent en ce qu'il affiche une boîte de dialogue donnant à l'utilisateur le choix d'augmenter l'espace de stockage pour le domaine actuel.)

Notez que sessionStorage et localStorage sont tous deux des implémentations du même objet Storage, leur comportement est donc similaire et la gestion des erreurs est la même.

76
tagawa