2009-05-14 6 views
1

Je voudrais demander est-il possible d'obtenir cette fonctionnalité: (sur le côté droit arborescence sur le côté gauche et le contenu)stratégie caching pour asp.net

J'ai un Ajax activé site web de l'utilisateur . Lorsque les utilisateurs sélectionnent un nœud sur le côté gauche, j'ai besoin de stocker le dernier nœud sélectionné dans la base de données. Cependant, l'utilisateur peut changer le nœud assez souvent (même 5 ou 10 fois par minute).

Je voudrais ajouter à la cache de l'application, comme:

cache["userName"]=selectedNodeID;

Y at-il cadre de la mise en cache qui: effectuer certaines actions sur un élément de cache si elle n'a pas été modifiée pour disons 5 minutes? Cela me permettrait de stocker le dernier identifiant de noeud sélectionné après 5 minutes de la dernière modification. Si l'utilisateur change le nœud avant la fin de cette période, je voudrais simplement mettre à jour la valeur du cache et réinitialiser le temporisateur.

Des indices?

Répondre

4

Vous pouvez utiliser le mécanisme de rappel lorsque l'élément de cache est supprimé du cache. Si vous définissez la durée du cache à 5 minutes, vous pouvez vérifier dans votre méthode de rappel si l'élément a déjà été enregistré. Si ce n'est pas le cas, vous pouvez l'insérer dans la base de données. Dans les deux cas, vous pouvez remettre l'objet dans le cache pendant encore 5 minutes.

par exemple. vous auriez quelque chose comme ce que le dernier paramètre de votre méthode Cache.Insert:

new CacheItemRemovedCallback (SaveItemToDatabaseAndReturnItToTheCache) 

et alors vous mettre en œuvre la méthode de rappel en conséquence.

plus d'info ici: http://weblogs.asp.net/kwarren/archive/2004/05/20/136129.aspx

+0

Merci pour la réponse, ça marche! – Adam

+0

Faites attention aux redémarrages du pool d'applications ou aux pannes système complètes. Dans ces cas, le rappel peut ne jamais être appelé et les données ne seront pas conservées. Utilisez un système de transaction pour résoudre le problème. –