2009-11-12 2 views
1

Est-il possible d'avoir un cache central pour une application Web ASP.NET accessible à l'aide de plusieurs noms de domaine? L'application Web utilise un site Web unique et un pool d'applications, avec plusieurs domaines (en-têtes d'hôte) pointant vers elle.Mise en cache ASP.NET pour une application Web avec plusieurs noms de domaine

Un peu d'arrière-plan - l'application a beaucoup de données qui ne changent pas beaucoup, et pour alléger la charge de la base de données, j'ai stocké cela dans des variables statiques. Cela a fonctionné sans aucun problème lorsqu'il n'y a qu'un seul domaine. Cependant, avec plusieurs domaines, il semble que chaque nom de domaine utilisé pour accéder au site Web possède sa propre copie de ces données, alors quand il est invalidé dans un site, les autres conservent leur propre version, ce qui ne le met jamais à jour. J'ai essayé de changer cela pour utiliser HttpRuntime.Cache au lieu de variables statiques, mais cela pose également le même problème où chaque domaine utilisé pour accéder au site semble stocker sa propre version des données.

Est-il possible de mettre en cache des données dans une application Web ASP.NET qui peuvent être partagées (et invalidées) dans tous les domaines utilisés pour y accéder?

Répondre

1

Essayez memcached. Vous pouvez utiliser l'API BeIT .Net. Memcached s'exécute en tant que service autonome et est destiné à faciliter la mise en cache distribuée. Il fonctionne sous Windows et sous Linux.

+0

Merci. Espérait qu'il y avait quelque chose de standard dans ASP.NET qui pourrait être utilisé pour y parvenir plutôt que d'utiliser une autre dépendance externe, mais je vais vérifier cela. – Mun

0

Vous pouvez créer une table en mémoire dans votre base de données et en tirer toutes les applications. Cela devrait fonctionner essentiellement de la même façon que votre cache le fait maintenant.

+0

Il n'existe pas de "table en mémoire" pour SQL Server. Les tables temporaires et les variables de table ne sont pas garanties en mémoire. – Manu

+0

Ce n'est pas garanti, mais vous pouvez obtenir très proche en allouant assez de RAM au serveur pour accommoder le tempdb qui essaye de travailler de la mémoire si disponible. – Myles

Questions connexes