2017-06-12 7 views
0

J'essaie d'utiliser MemoryCache dans .Net 4.5 pour stocker un objet pendant 1 mois (expiration absolue - 1 mois à partir de la création du cache)..NET Caching - cache expire très tôt

Problème - Le cache semble expirer dans un jour - parfois en quelques heures, en fait.

Code Snippet

// Setting the cache with absolute expiration time of 1 month: 
string objName = "myObj"; 
MemoryCache memCache = MemoryCache.Default; 
memCache.Add(tokenID, myObj, DateTimeOffset.UtcNow.AddMonths(1)); 

// Accessing the cache later 
MemoryCache getCache = MemoryCache.Default; 
getCache.Get(tokenID); 

Questions

  1. Suis-je le cache le réglage correct? Je n'ai pas vu d'exemples qui utilisent AddMonths(), mais il y en a beaucoup qui utilisent AddDays() - cela devrait-il être important?
  2. Y a-t-il un maximum de temps que je pourrais utiliser pour une expiration absolue? (Je n'ai rencontré aucun exemple définissant des caches pendant plus de 30 jours, sans utiliser le temps d'expiration infini.)
  3. Quoi d'autre pourrait faire expirer le cache si rapidement?

Merci beaucoup!

+0

Est-ce que le serveur Web ont un paramètre pour arrêter le site au ralenti et est-il du trafic constant pour empêcher cela? –

+0

@SamiKuhmonen - Les paramètres du pool d'applications de mon site ont un délai d'inactivité = 5 minutes et une limite de temps d'arrêt = 90 secondes. Parlez-vous de l'un de ceux? – Ekta

+1

Oui, exactement. Cela signifie que s'il n'y a pas de requêtes sur votre site pendant cinq minutes, les travailleurs sont fermés, ce qui supprime également tout ce qui se trouve dans le cache mémoire. Très probablement, cela cause les problèmes. –

Répondre

1

Vérifiez le paramètre IIS AppPool que vous utilisez pour votre application Web. Sous Paramètres avancés, il existe un paramètre pour Délai d'inactivité (minutes). Si votre site est inactif pendant plus longtemps que cette période, le processus de travail est arrêté.