Le stockage des Données En Mémoire: Session vs Cache vs Statique

Un peu d'histoire: je suis en train de travailler sur une application web qui nécessite un peu de temps pour préparer /crunch de données avant de la donner à l'utilisateur de modifier /manipuler. La demande de données de la tâche ~ 15 /20 secondes à remplir et à quelques secondes de processus. Une fois là, l'utilisateur peut manipuler vaules à la volée. Toute manipulation des valeurs de besoin de données pour être retraité complètement.

Mise à jour: Pour éviter toute confusion, je ne fais que l'appel de données de 1 heure (le 15 sec hit) et de vouloir garder les résultats en mémoire, de sorte que je n'aurai pas l'appeler de nouveau jusqu'à ce que l'utilisateur est fait à 100% de travail avec elle. Donc, la première traction va prendre du temps, mais, à l'aide d'Ajax, je vais frapper la mémoire de données constamment mise à jour et de garder le temps de réponse d'environ 2 secondes ou si (je l'espère).

Afin de faire de cette efficace, je suis le mouvement de la intial de données dans la mémoire et à l'aide des appels Ajax vers le serveur de sorte que je peux réduire le temps de traitement pour traiter le recalcul se produit w/de l'utilisateur, des mises à jour.

Voici ma question, avec des performances à l'esprit, ce serait le meilleur moyen de stocker ces données, en supposant que seulement 1 utilisateur va travailler w/ces données à tout moment.

Aussi, l'utilisateur peut éventuellement être travaillent dans ce processus pour quelques heures. Lorsque l'utilisateur travaille w/les données, j'ai besoin d'une sorte de failsafe pour enregistrer l'utilisateur actuel de données (que ce soit dans la bd ou dans un sérialisé fichier binaire) devrait leur être interrompue, d'une certaine façon. En d'autres termes, j'ai besoin d'une solution qui possède un crochet pour me permettre de me vider la mémoire de l'objet de données dans le cas où l'utilisateur est déconnecté /distrait pendant trop longtemps.

Jusqu'à présent, voici mes réflexions:

L'État de Session - Pros: Bloqué à un seul utilisateur. A la Fin de la Session de l'événement qui va répondre à mon failsafe exigences. Inconvénients: plus Lent perf de mes options. La Fin de Session de l'événement est parfois difficile de s'assurer qu'elle déclenche correctement.

Cache - Pros: Bonne Perf. A accès à des dépendances de ce qui pourrait être un bonus plus tard en bas de la ligne, mais pas vraiment utile dans le champ d'application actuel. Inconvénients: Pas facile failsafe étape d'autre qu'une écriture basée sur des intervalles de temps. De portée mondiale - devra s'assurer que les utilisateurs ne sont pas en collision w/travail de chacun.

Statique - Avantages: Meilleure Perf. Easies pour maintenir comme je peut directement tirer parti de ma classe actuelle des structures. Inconvénients: Pas facile failsafe étape d'autre qu'une écriture basée sur des intervalles de temps. De portée mondiale - devra s'assurer que les utilisateurs ne sont pas en collision w/travail de chacun.

Quelqu'un aurait-il des suggestions et /ou commentaires sur ce que j'ai l'option que je devrais choisir?

Merci!

Mise à jour: j'ai Oublié de mentionner, je suis en utilisant VB.Net, Asp.Net et Sql Server 2005 pour effectuer cette tâche.

Il est généralement moins coûteux pour mettre à niveau votre serveur que de passer du temps à l'optimisation de votre code. Je crois que Jeff Atwood a dit quelque chose à ce sujet sur son blog ces derniers temps.
Je crois que j'aurais été plus précis w/ performance. Je ne vous inquiétez pas tellement sur le serveur de la manipulation de l'utilisation de la mémoire, mais, plutôt, combien de temps il faudra pour obtenir ma réponse à l'utilisateur.
Quelle langue/tech utilisez-vous?
Lol, pourrait avoir spécifié. Dans ce cas, je suis en utilisant VB.Net, Asp.Net et Sql Server 2005

OriginalL'auteur Nathan | 2009-01-30