82 votes

Quelle est la permanence du stockage local sur Android et iOS ?

Lorsque mon application stocke des données localement sur un téléphone, quelle est la durée de ce stockage ? Je vais vous expliquer la situation exacte :

Je suis en train de construire une application avec jQueryMobile et Phonegap. Il s'agit essentiellement d'une application pour navigateur, mais l'utilisation de Phonegap me permet de l'emballer et de la vendre dans les magasins d'applications, entre autres avantages.

Phonegap propose deux modes de stockage, dont les fonctions s'harmonisent avec les fonctions natives de iOs, Android, Blackberry et quelques autres OS : localStorage (qui est constitué de paires primitives clé-valeur), et une base de données SQL Web. Tant localStorage que Web SQL sont des formes de stockage qui appartiennent au navigateur. Cela dit, je n'arrive pas à savoir combien de temps les données resteront stockées, dans quelles circonstances elles seront supprimées, dans quelles circonstances elles ne seront pas disponibles, etc.

Par exemple, si l'application stocke des données avec localStorage ou web SQL, et que l'utilisateur passe à un autre navigateur standard sur son Android, l'application sera-t-elle ouverte avec le nouveau navigateur et cela signifie-t-il que les données stockées sont indisponibles ?

Si l'utilisateur n'utilise pas l'application pendant un an (ce qui, dans mon cas, est un scénario réaliste et pas nécessairement mauvais), les données auront-elles expiré comme un cookie, ou auront-elles été expulsées du stockage du navigateur par un déluge de données provenant d'autres applications ?

Ou bien les données seront-elles détruites encore plus tôt, par exemple lorsque : - l'utilisateur visite un autre site dans le navigateur - le navigateur est fermé manuellement - le processus du navigateur est tué ou meurt - etc.

Ou bien est-ce que localStorage et web SQL sont le type de stockage que vous ne supprimez que lorsque (dans Android) vous allez dans Paramètres > Apps et supprimez activement les données utilisateur associées à l'application ?

Merci pour toute information. Il n'y a rien d'informatif sur le vieux WWW.

Que se passe-t-il en cas de mise à jour de l'application. Le stockage local et web sera-t-il supprimé ou restera-t-il ?

1voto

Sarantis Tofas Points 3398

Il serait préférable en termes de performance, de sécurité et de fiabilité de ÉVITER l'utilisation du stockage local et l'utilisation Cordova-sqlite-storage à la place.

Quelques notes :

localStorage a l'avantage d'être facile à utiliser, mais il fonctionne de manière synchrone. Cela signifie qu'il peut verrouiller le fil d'exécution de l'interface utilisateur et ralentir les performances.

localStorage dispose d'une quantité limitée de stockage, généralement 5 mb.

localStorage peut être effacé par le système d'exploitation (Android, ios) à tout moment. C'est vraiment grave si vous vous souciez de la persistance des données.

D'un autre côté :

Cordova-sqlite-storage est asynchrone et ne bloque pas le thread de l'interface utilisateur, il enregistre vos données sur le stockage natif du dispositif, la quantité de stockage n'est pas limitée, le système d'exploitation ne supprimera aucune de vos données, sauf si vous désinstallez l'application.

0 votes

L'effacement du stockage local est-il toujours un problème sous iOS11 ?

1voto

SpikeX Points 5758

Je ne peux pas parler pour d'autres plates-formes, mais sur mon appareil Android 4.1, j'utilise localStorage pour stocker certaines données localement avec jQuery Mobile, et j'ai constaté qu'Android vidait ma mémoire cache toutes les semaines environ à mon insu. Je vais faire un essai avec Web SQL et voir si c'est mieux.

0 votes

Merci pour la mise à jour SpikeX ! Je suppose que Phonegap/Cordova trouveront une solution presque aussi rapidement qu'ils l'ont fait pour iOS (environ un mois, je crois). Mais ce n'est pas une option pour tout le monde.

0 votes

@Wytze pouvez-vous fournir la source qui affirme que PhoneGap a corrigé le problème sur iOS ?

0 votes

@Dheeraj Non, désolé, c'était il y a plus d'un an. Je me souviens que le problème a été corrigé dans l'une des versions suivantes de Phonegap. Je n'ai jamais eu de problème depuis, que ce soit sur Android ou iOS.

-1voto

Nikhil M Points 376

J'ai trouvé ceci en ligne ng-persist

Stocker des données sur les appareils mobiles (à l'aide de Cordova) qui persistent même si le l'utilisateur réinstalle l'application

Installer

bower install ng-persist ngstorage --save

Injecter $persist dans votre contrôleur

.controller('MyCtrl', function($persist) {

    $persist
        .set(namespace, key, val)
        .then(function () {
            // saved
        });

    // read
    $persist
        .get(namespace, key, fallback)
        .then(function (val) {
            // val is either the value, if exists, or the fallback
        });

    // delete
    $persist
        .remove(namespace, key)
        .then(function () {
            // removed
        });

});

1 votes

Ce n'est qu'une enveloppe pour LocalStorage ! Dans les notes, il est écrit "fonctionne dans le navigateur avec un stockage local".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X