Question

J'ai un objet qui contient des données par rapport à l'interface utilisateur de l'utilisateur. Pour le moment, les données se présentent sous la forme de JSON, j'exécute JSON.Parse pour évaluer l'objet et générer du HTML en conséquence.

Je pense stocker la chaîne JSON dans le stockage de session local (pas le stockage local) et l'appeler chaque fois que l'interface utilisateur doit être mise à jour avec un nouveau HTML. De cette façon, si l'utilisateur ouvre une autre page dans le même navigateur, tout le HTML de toutes les pages sera le même.

Pour l'instant, l'objet est stocké en mémoire et les interactions entre les actions de l'utilisateur sur l'interface utilisateur et les modifications de l'objet s'exécutent rapidement. Si je le sérialise et le stockage dans le stockage de session, les navigateurs stockeront-ils les données en RAM ou sur le disque dur et ralentiront-elles la page?

Était-ce utile?

La solution

Tiré de la spécification HTML5:

La durée de vie d'un contexte de navigation peut être sans rapport avec la durée de vie du processus d'agent utilisateur réel lui-même, car l'agent utilisateur peut prendre en charge les séances de reprise après un redémarrage.

Ce qui signifie que les navigateurs peuvent stocker ces informations sur le disque.

Les performances seront à la hauteur des implémentations spécifiques au navigateur et des OS. Cependant, il est peu probable que le récupération de ces informations soit un goulot d'étranglement.

Autres conseils

J'ai fait ce petit test FF 32, Chrome 37, c'est-à-dire 11. Juste pour le plaisir.

console.clear();
var s = new Date();
for(var i=0; i < 100000; i++)
{
  sessionStorage.item = i.toString();
}
var e = new Date();
console.log("session: " + (e - s) + " ms");

s = new Date();
var mem;
for(var i=0; i < 100000; i++)
{
  mem = i.toString();
}
e = new Date();
console.log("mem: " + (e - s) + " ms");

s = new Date();
for(var i=0; i < 100000; i++)
{
  localStorage.item = i.toString();
}
e = new Date();
console.log("local: " + (e - s) + " ms");
console.log('Done');

Ff

  • Session: 830 ms
  • MEM: 92 ms
  • Local: 1156 MS

Chrome

  • Session: 2852 ms
  • MEM: 147 ms
  • Local: 2893 MS

C'EST À DIRE

  • Session: 977 MS
  • MEM: 81 ms
  • Local: 15062 MS

Après avoir terminé le test, la fenêtre du navigateur a été congelée pendant quelques secondes et l'activité du disque CPU + a augmenté (causée par LocalStorage).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top