2010-04-22 3 views
2

J'arrachais mes cheveux depuis plusieurs heures.objet cache d'expiration absolue - peut-il être supprimé manuellement?

j'ai un objet cache ..

HttpRuntime.Cache.Insert("Members", AllMembersList, null, DateTime.Now.AddHours(1), TimeSpan.Zero); 

lorsque je tente et claire l'objet cache ..

HttpRuntime.Cache.Remove("Members"); 

sa valeur ne marche pas le changement, jusqu'à ce 1 heure est ou quand je réinitialiser le serveur.

Ma question ... pour un objet de cache dont l'expiration est absolue, puis-je l'effacer manuellement ou existera-t-il pendant une heure complète? Ce que je voudrais, c'est que cet objet dure une heure mais, selon l'exécution du programme, soit capable de l'effacer pour qu'il contienne de nouvelles données.

toute aide est très appréciée

truegilly

Répondre

1

La méthode Remove devrait fonctionner correctement pour cela.

Etes-vous sûr que vous appelez correctement Remove et qu'il n'y a pas d'autre code réinsérant l'élément dans le cache?

+0

merci pour les réponses, im encore des problèmes avec cela. 1 - Je tente d'effacer le cache d'un sous-domaine de mon site admin.mysite.co.uk et 2 im en utilisant un contexte de données LINQ plutôt qu'une requête de base de données directe? – JGilmartin

1

De http://www.neovolve.com/page/Cache-Expiration-Policies.aspx

Quand sont les articles effectivement vidées de le cache?

La plupart des cadres de mise en cache ne supprimer expirés éléments du cache lorsque les ressources du système sont rares ou lorsque le cache est référencé. Ce signifie qu'une entrée de cache qui a expiré en raison d'une absolue ou de glissement expiration ne peut pas être retirée du cache jusqu'à une date ultérieure qui peut bien après l'entrée effectivement a expiré.

Ceci est fait pour la performance. Les structures de mise en cache utilisent normalement un algorithme de balayage qui recherche entrées expirées et les supprime. Ce est généralement appelé lorsque le cache est référencé plutôt que lorsque les éléments expirent réellement. Cela permet au cadre de cache d'éviter d'avoir à constamment suivre les événements en fonction du temps à savoir quand retirer des éléments du cache .

Vous pouvez essayer de définir la valeur mise en cache sur null.

Questions connexes