web-dev-qa-db-fra.com

Quelle est la persistance de localStorage?

Je compte énormément sur localStorage pour un plugin que j'écris. Tous les paramètres utilisateur y sont stockés. Certains paramètres nécessitent que l'utilisateur écrive les expressions rationnelles et ils seraient tristes si leurs règles sur les expressions rationnelles disparaissent à un moment donné. Alors maintenant, je me demande à quel point le stockage local est persistant.

De les specs :

Les agents d'utilisateur doivent expirer les données des zones de stockage locales uniquement pour des raisons de sécurité ou à la demande de l'utilisateur.

Ce qui précède ressemble à cela fonctionne exactement comme des cookies côté client. C'est à dire. Lorsque l'utilisateur efface toutes les données du navigateur (historique, cookies, cache, etc.), le stockage local sera également tronqué. Cette hypothèse est-elle correcte?

93
PeeHaa

Mozilla l'implémente comme des cookies:

Le stockage DOM peut être effacé via "Outils -> Effacer l'historique récent -> Cookies" lorsque l'intervalle de temps est "Tout" (via nsICookieManager :: removeAll)

https://developer.mozilla.org/en/DOM/Storage

Dans le stockage DOM il n'est pas possible de spécifier une période d'expiration pour vos données. Toutes les règles d'expiration sont laissées à l'utilisateur. Dans le cas de Mozilla, la plupart de ces règles sont héritées des règles d'expiration relatives aux cookies. De ce fait, vous pouvez probablement vous attendre à ce que la plupart de vos données de stockage DOM durent au moins pendant une durée significative.

http://ejohn.org/blog/dom-storage/

Chrome l'implémente comme cache:

LocalStorage n'est pas un stockage sécurisé

Le stockage local HTML5 enregistre les données non chiffrées sous forme de chaîne dans le cache du navigateur standard .

Persistance

Sur le disque jusqu'à ce qu'il soit supprimé par l'utilisateur (supprimer le cache) ou par l'application

https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5Storage


En ce qui concerne "le remplacement du cookie", pas entièrement

Les cookies et le stockage local servent vraiment à des fins différentes. Les cookies sont principalement destinés à la lecture côté serveur, LocalStorage ne peut être lu que côté client. La question est donc, dans votre application, qui a besoin de ces données - le client ou le serveur?

66
Joseph

Fondamentalement, vous devriez pas dépendent fortement du stockage local.

Le stockage local, ainsi que le stockage de session, vise à remplacer les cookies en définissant une API plus cohérente. Il y a quelques différences avec les cookies:

  • Alors que les cookies sont accessibles à la fois du côté client et du côté serveur, Web Storage en général et le stockage local en particulier ne sont accessibles que du côté client.
  • Capacité améliorée (la valeur officielle pour les cookies est de 4 Ko) à plus de 5 Mo par domaine (Firefox, Google Chrome et Opera et 10 Mo dans IE).

Donc oui, votre hypothèse est correcte.

16
Daniel Ribeiro

Une chose à noter sur l'utilisation du stockage local. C'est très spécifique au navigateur. Si vous stockez des données avec Firefox, elles ne seront pas disponibles dans chrome ou c.-à-d., Etc.). Aussi, en ce qui concerne l'effacement des cookies et des sessions, j'ai remarqué qu'il est également spécifique à votre navigateur de savoir si Je me pencherais beaucoup sur les détails si vous envisagez de vous fier à un stockage local pour une application.

6
Luke

Le stockage local est conçu pour être un stockage fiable et persistant de données sur un client. Il n'est pas conçu comme un "meilleur cookie": cette fonction est conçue pour être remplie par le stockage de session.

D'après le recommandation du candidat au stockage Web pour décembre 2011 ,

(Stockage local) est conçu pour un stockage couvrant plusieurs fenêtres et se prolongeant au-delà de la session en cours. En particulier, les applications Web peuvent souhaiter stocker des mégaoctets de données utilisateur, telles que des documents entiers créés par l'utilisateur ou la boîte aux lettres d'un utilisateur, côté client, pour des raisons de performances.

En tant que données côté client, elles sont aussi persistantes que toutes les données côté client, dans les limites de taille que le navigateur implémente. Les utilisateurs peuvent le supprimer à tout moment, l'ouvrir dans un éditeur de texte et l'éditer, etc. - comme pour TOUTES les données côté client.

4
Michael Mullany

Si vous utilisez localStorage pour une application iOS, soyez très prudent. La dernière version d’iOS (la version 5.1 me vient à l’esprit) a déplacé les données localstorage et localdb dans une partie du cache régulièrement effacée, c’est-à-dire qu’elle n’est pas persistante. Je ne peux pas encore dire s'il s'agit d'un bogue ou d'un changement de politique.

2
Wytze