2010-07-02 8 views
1

Je voudrais savoir s'il est possible de mettre en cache un UserControl ASP.NET sur le client.Mise en cache des contrôles utilisateur ASP.NET sur le client

J'ai un contrôle utilisateur qui interroge un DB et rend un GridView. Il doit être sur le client car les résultats de la requête varient d'un utilisateur à l'autre (par User.Identity.Name). La page est destinée à un intranet.

Toute aide serait vraiment appréciée!

Merci à l'avance,

PS: Où sont les contrôles utilisateur mis en cache par défaut? Serveur, proxy?

+0

en mémoire cache sur le serveur par défaut si vous activez la mise en cache. – IsmailS

+0

Je sais que ce n'est pas sur le client mais ajoute la source de données gridview à l'état de session une option? – JohnC

+0

@johnc: Vous pouvez ajouter des objets DTO déconnectés tels que DataTables à l'état de session. Veillez à ne pas ajouter d'objets "connectés", tels que DataReaders, ou à maintenir des connexions de base de données ouvertes et à surcharger le pool de connexions. –

Répondre

0

Les contrôles utilisateur sont TOUJOURS mis en cache sur le serveur Web, et non sur les serveurs proxy ou les navigateurs Web. Cependant, pour répondre à votre intention, vous pouvez afficher différents résultats en cache en fonction des attributs VaryBy de la directive OutputCache. Ceux-ci comprennent:

  • VaryByParam
  • VaryByControl
  • VaryByCustom
+0

Merci! J'ai utilisé une directive VaryByCustom pour spécifier que le cache ne devrait être disponible que pour l'utilisateur actuel. – Meryovi

1

Les serveurs proxy et les clients ne peuvent mettre en cache que des données statiques. Les données dynamiques doivent toujours être servies par IIS, bien que vous puissiez améliorer l'efficacité en stockant les données dans un cache en mémoire au lieu d'interroger une base de données pour chaque requête. Le terme «mise en cache», en ce qui concerne ASP.NET, fait le plus souvent référence au stockage de données en mémoire sur le serveur. Vous distribuez des données différentes à différents utilisateurs en utilisant une valeur de clé, telle que User.Identity.Name. Si vous souhaitez mettre en cache les résultats d'un utilisateur sur le serveur, vous pouvez ajouter un DataSet (ou un autre DTO) au dictionnaire de cache à l'aide de Cache.Add, en utilisant l'ID de l'utilisateur comme clé. Si les données en question ne changent pas très souvent, cela peut être un moyen efficace de fournir des données spécifiques à l'utilisateur. Si les données changent souvent, vous pouvez utiliser les mécanismes de rappel de l'objet Cache pour expirer les éléments du cache lorsque (par exemple) un fichier change. IIS/ASP.NET prend également en charge la mise en cache des pages et la mise en cache partielle des pages en fonction d'une chaîne de requête. Ceux-ci sont contrôlés par des directives page dans la page .aspx et par site par web.config.

Questions connexes