2012-04-24 7 views
2

J'ai une application Web intégrée dans .NETOptimiser le stockage local et la recherche

Au cours d'une session, l'utilisateur doit accéder à une valeur dictionnaire, qui est peuplée de la base de données. L'utilisateur y effectue des appels fréquents.

Je veux réduire les appels HTTP et vouloir apporter la valeur du dictionnaire au client et y accéder à partir de là.

Je voulais comprendre quelle serait la meilleure pratique pour stocker cette valeur de dictionnaire localement de telle sorte que la récupération des données est très rapide? Ce que j'essaie de faire est similaire à ce que fait FaceBook avec "@", donc quand vous écrivez @Name, il fait rapidement une recherche dans la base de données et remplace le texte par le lien. Dans mon cas, j'ai un ensemble fixe de données à rechercher et généralement il n'est pas au-delà de 10-15 paires nom-valeur. J'ai envisagé de stocker des valeurs dans les cookies, mais je ne sais pas vraiment s'il y aurait une limite de stockage et je ne suis pas non plus conscient de la rapidité de la récupération.

Toute aide est très appréciée.

Merci Vous

+0

Ce dictionnaire devra-t-il être mis à jour chaque fois que l'utilisateur visite le site ou une fois qu'il a visité toutes les visites suivantes, utiliser le même dictionnaire? –

+0

Le dictionnaire reste généralement statique. Cela pourrait changer rarement, comme une fois par mois. Mais je voudrais supposer qu'ils sont statiques. – Jayesh

Répondre

1

Si le dictionnaire est statique, vous pouvez alors utiliser JSON.stringify et localStorage pour le stocker. De cette façon, l'utilisateur n'a qu'à le charger la première fois qu'il visite votre site. Après il est stocké dans localStorage, je suggère de le charger dans un objet JavaScript en utilisant JSON.parse chaque fois que la page est chargée pour accélérer la recherche depuis un objet JavaScript fonctionne comme une table de hachage.

Vous pouvez ensuite ajouter une vérification simple à chaque chargement de la page pour voir si le dictionnaire doit être actualisé.

var globalDictionaryHash = null; 

function loadDictionary() 
{ 
    if (localStorage.getItem("my_dict") == null) 
    { 
    localStorage.setItem("my_dict", JSON.stringify(myObjectFromAJAXCall)); 
    } 

    globalDictionaryHash = JSON.parse(localStorage.getItem("my_dict")); 
    console.log(globalDictionaryHash['key']); 
}