2010-10-10 5 views
0

J'écris un webcontrol dans asp.net qui doit aller chercher des informations à partir d'une API. Il n'est pas essentiel d'être à jour, et la récupération des informations est assez lente, donc je préfère mettre en cache les informations et les mettre à jour toutes les 5 minutes.asp.net webcontrol cache

Il me semble potentiellement risqué d'utiliser Context.Cache car potentiellement quelqu'un pourrait utiliser le même nom, mais je ne trouve pas d'autre moyen de faire de la mise en cache dans un contrôle.

Quelqu'un a-t-il d'autres idées?

(en utilisant asp.net 2.0).

+0

Que voulez-vous dire par * quelqu'un pourrait utiliser le même nom *? Quelqu'un, ce qui signifie d'autres développeurs? –

+0

Oui. L'idée est que ce soit quelqu'un qui télécharge et utilise le composant. –

Répondre

0

Il semble que Context.Cache soit exactement ce dont vous avez besoin pour stocker ce type d'informations. L'objet de cache est localisé dans votre application. Il ne peut donc être modifié que par un autre code de votre application.

Vous pouvez toujours donner la clé de votre cache une très longue et probablement etc nom inutile et stocker cette clé au sein de votre classe ...

Private const CacheKey as String = "e92a627b-3a9f-46da-a182-d73b44fe87ad" ' A random guid 

Cache.Item(CacheKey) = TheRefreshedData ' etc 

Comme je en train d'écrire cette réponse que je réalisais peut-être vous parliez de votre conntrol étant réutilisé dans l'application de quelqu'un d'autre ... comme dans votre contrôle est redistribué ou fourni pour le téléchargement. Dans ce cas, vous pouvez toujours préfixe la clé de cache avec votre commande pour être « sensiblement » unique ...

Private const CacheKey As String = "MyCompany.MyControl.MyData" 

Cache.Item(CacheKey) = TheRefreshedData ' etc 

Quoi qu'il en soit, vous devriez être en mesure de trouver une chaîne assez de longueur qui a zéro chance de être réutilisé ...