2010-03-19 3 views
2

J'ai une application ASP.NET de base qui est utilisée pour demander des données qui sont stockées sur le disque. Ceci est chargé à partir des fichiers et envoyé comme réponse. Je veux être en mesure de stocker les données chargées à partir de ces fichiers en mémoire pour réduire le nombre de lectures à partir du disque. Toutes les demandes demanderont les mêmes données, il est donc logique d'avoir un seul cache de données en mémoire qui est accessible à toutes les demandes.Données partagées dans une application ASP.NET

Quelle est la meilleure façon de créer une seule instance d'objet accessible que je peux utiliser pour stocker et accéder à ces données en cache? J'ai regardé dans HttpApplication, mais apparemment une nouvelle instance de ceci est créée pour des demandes parallèles et ainsi elle ne correspond pas à mes besoins.

Répondre

2

D'abord, vous pouvez mettre en cache la réponse. Regardez ici: How to cache in ASP.NET by using Visual C# .NET

Si vous souhaitez, vous pouvez charger manuellement les fichiers en mémoire et garder leur contenu dans des champs statiques. Ceux-ci seront partagés entre tous les clients du même domaine d'application.

De toute façon, cela consommera la mémoire du serveur. Assurez-vous que vous en avez assez.

+0

les mettre en session? comment cela aiderait-il alors il aurait une copie du fichier en mémoire pour chaque client (session) ... – Peter

+0

Oui, vous avez raison, ma faute. –

0

Utilisez le this.Cache.Add/Get

Ce cache api est simple et fonctionne très bien dans les cas Moste.

+0

Vraisemblablement, cette mémoire cache? Et il y a un cache auquel toutes les requêtes parallèles peuvent accéder? Si oui, merci - cela fonctionnera très bien. :) – Barguast

+0

Oui barguast c'est vrai et tant que vous utilisez la même clé, il n'y aura qu'une seule instance chargée en mémoire! – Peter

Questions connexes