Question

Je ne sais pas si cela est possible dans ASP.NET, mais voici le problème que j'ai: quelques-unes des listes de données sur mon application Web sont affichées en utilisant un GridView ; cependant, parce que certaines de ces listes peuvent contenir un grand nombre de données, ils poussent parfois le poids de page vers le haut dans la gamme de plusieurs méga-octets en raison de la ViewState . Étant donné que nous ne voulons pas actualiser la base de données pour cette information chaque fois qu'il ya un postback sur la page que je me demandais s'il y avait une façon que je pouvais mettre en cache les données fournies au contrôle sur le serveur et accéder alors la prochaine fois il y a un postback.

Alors est-ce possible? Si oui quelqu'un peut me diriger dans la direction de plus d'informations sur la façon de le faire? S'il est impossible, que quelqu'un a des suggestions sur la façon dont je pourrais être en mesure de résoudre ce problème?

Était-ce utile?

La solution

Vous pouvez utiliser un autre magasin pour votre état d'affichage en plus de la page. Cet article décrit certaines méthodes pour le faire.

L'essentiel de cela est de remplacer SavePageStateToPersistenceMedium et LoadPageStateFromPersistenceMedium.

Autres conseils

Vous pouvez essayer de désactiver ViewState sur le GridView. Cela peut souvent se faire sans affecter la fonctionnalité. Fonctionne très bien si votre GridView est qu'afficher les données et ne permet pas les modifications, mises à jour, supprime, etc.

http://www.pluralsight.com/main /screencasts/screencast.aspx?id=understanding-viewstate

EnableViewState="false"

En général, vous devez créer un équilibre entre ViewState sur le client et un certain type de cache sur le serveur. Ne soyez pas horriblement peur de re-interroger votre base de données. Il peut mettre en cache les données assez bien. Peut-être regarder à permettre la mise en cache de la page. Je voudrais éviter la farce toutes ces données en session qui vient avec son propre ensemble de problèmes.

http://msdn.microsoft.com/en-us/library /hdxfb6cy.aspx

<%@ Page Language="C#" AutoEventWireup="true" ... %>
<%@ OutputCache ... %>

Voici un exemple de la façon dont vous pouvez stocker dans l'état d'affichage des fichiers temporaires locales: http://www.marklio.com/ marklio / PermaLink.aspx? guid = af76f1a0-2d44-44c3-bfb5-029740b8e683

Vous utilisez toujours Viewstate avec cette approche, mais au lieu de remplir le code HTML que vous créez des fichiers temporaires sur le côté serveur. Ainsi, l'utilisateur ne remarquera pas que le Viewstate est énorme. Vous pouvez également réécrire l'exemple ci-dessus pour stocker les données VIEWSTATE ailleurs, comme une base de données ou même dans la mémoire.

L'avantage de cette approche est que vous n'aurez pas à réécrire le code beaucoup. L'inconvénient est que ces fichiers temporaires rempliront l'espace sur le serveur et doit être nettoyé de temps en temps.

Rob, ce que je voudrais essayer dans votre cas est de mettre en cache les données extraites de la base de données en session - la première grille de temps la demande.

Si vous essayez et combiner avec la désactivation de l'état d'affichage de la grille, vous pouvez venir avec une solution assez lisse.

Si vous ne pouvez pas compter sur session pour la mise en cache, il y a toujours des mécanismes de persistance alternatives qui pourraient faire le travail.

Mais de l'aspect de la conception de la situation donnée, je serais certainement aller avec l'approche de la mise en cache des données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top