2013-06-04 4 views
0

Comme je l'ai lu ici, l'utilisation de Session est mauvaise pour stocker de grandes quantités de données.Que utiliser à la place de Session?

J'ai une méthode en C# dans un contrôleur, que j'appelle depuis un fichier javascript (avec un appel ajax). Cette méthode est appelée beaucoup de fois, 500 ou plus. Dans cette méthode, j'ai une boucle for qui boucle 10 fois.

La première fois que je l'appelle, je crée une nouvelle session et la place à null. Après cela, toutes les fois que je l'appelle, pour chaque boucle, j'ajoute des données à la session.

Pour les petites données, cela fonctionne très bien. En fait, cela fonctionne même pour les gros volumes de données. Mais le problème est le suivant: plus le nombre d'appels est important, plus le temps d'attente est long. Pour 500 fois cela prend 5 heures. Je lis ici: Storing large amounts of data in the Asp.net session cette session n'est pas bonne pour stocker de grandes quantités de données.

Que devrais-je utiliser comme alternative? J'ai pensé à l'enregistrer dans db, mais chaque fois que j'appelle la méthode, j'ai besoin de deux requêtes sur db: une pour obtenir les données et deux pour les réenregistrer.

Que dois-je faire pour le faire fonctionner plus rapidement?

+1

Base de données serait la réponse normale. Peut-être pourriez-vous fournir plus de détails afin que nous puissions comprendre exactement pourquoi une base de données ne fonctionnerait pas dans cette situation. Pouvez-vous montrer du code? – mbeckish

+0

Je suis d'accord avec mbeckish. Si vous n'utilisez pas la base de données, vous devriez. –

Répondre

0

Avez-vous un seul serveur? Si c'est le cas, vous pouvez stocker les données en tant que fichier local s'il est trop volumineux pour être stocké dans une base de données. Cependant, cela ne sera pas échelonné sur plusieurs serveurs, sauf s'ils ont un accès aux fichiers commun quelque part. Sinon, quelque chose comme une base de données ou un cache distribué serait le meilleur choix.

Questions connexes