..
La mise en cache des données est un outil utile pour améliorer la performance de tout système logiciel. L'idée est de mettre les données fréquemment utilisées dans un appareil très puissant. En fait, bien que le temps d'accès aux périphériques de stockage de masse de continuer à améliorer, par exemple, l'accès aux données résidant sur un disque dur est toujours très lent que d'y accéder pendant qu'ils sont en mémoire. Ainsi rendre disponibles les données plus rapidement utilisé contribue de manière significative à améliorer la performance de nos applications.
Dans le cache ASP.NET est parallèle à nos applications et est disponible via HttpContext et System.Web.UI.Page. Utilisez le cache est très similaire à ce qui a été vu pour l'objet Session, que vous pouvez obtenir l'accès aux objets dans ce via un indexeur. En outre, vous pouvez également contrôler la durée de l'ensemble des objets et des connexions entre les objets dans le cache et la source de données physique.
La gestion du cache dans ASP.NET est très simple pour voir comment procéder avec un exemple. Supposons que vous ayez une méthode getData () qui permet une connexion à une base de données et retourne un DataTable
DataTable protégée GetData ()
{
DataTable dt = null;
dt = new DataTable ();
Chaîne strConnection = "chaîne de connexion à DB»;
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
en utilisant (DbConnection conn = f.CreateConnection ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand command = f.CreateCommand ();
command.CommandText = "Select * from tablename";
command.Connection = conn;
IDataReader lecteur = Command.ExecuteReader ();
dt.Load (lecteur);
reader.Close ();
conn.Close ();
}
retour dt;
}
Nous avons aussi une autre méthode de BindData () qui associe les données renvoyées par GetData () à un présent DataList dans un de nos formulaires Web
BindData protégée DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource dt =;
this.DataBind ();
retour dt;
}
Une autre méthode que nous avons besoin pour notre exemple est CreaTabella qui retourne la structure d'une table en fonction d'un certain modèle
CreaTabella protégée DataTable (DataTable TableSchema)
{
DataTable table = new DataTable ();
foreach (DataColumn dc tableSchema.Columns)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
retour table;
}
Méthodes GetData () et BindData () sont appelées dans l'événement Page_Load comme suit:
protected void Page_Load (object sender, EventArgs e)
{
if (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
Session ["elementiTabella"] = elementiTabella;
}
}
et ensuite chaque fois que la page est créée, vous connecter à la base et recharge les données.
Dans un contexte où les demandes viennent de l'intérieur ce que le client pourrait être acceptable pour des applications de taille pour répondre aux exigences de milliers de clients, ce n'est pas acceptable.
En fait, les opérations d'accès aux bases cadeau très coûteux en temps et doit être minimisée.
À ce stade, nous pouvons faire des estimations de la nature des données gérées par notre application. Je me demandais si vous avez besoin de recharger les données à chaque fois si ils ne changent pas souvent. S'il ya un tel besoin, nous pouvons penser à stocker ces données sur un support qui permet d'accéder aux mêmes très rapide et sans connexions à la base (par exemple, l'ordinateur de mémoire interne). De cette manière, l'application se réunira de nombreuses demandes simultanées plus de clients. Évidemment, si les données traitées par notre application allait changer très souvent de cette approche ne serait pas approprié.
Les étapes pour faire la mise en cache des données sont les suivantes:
À ce stade, nous allons changer les méthodes que nous avons vu au début de cette leçon pour gérer la mise en cache des données. Voici la méthode GetData () modifiées
DataTable protégée GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
Chaîne strConnection = "chaîne de connexion à DB»;
DbProviderFactory DbProviderFactories.GetFactory = f ("System.Data.SqlClient");
en utilisant (DbConnection conn = f.CreateConnection ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand command = f.CreateCommand ();
command.CommandText = "Select * from tablename";
command.Connection = conn;
IDataReader lecteur = Command.ExecuteReader ();
dt.Load (lecteur);
reader.Close ();
conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
retour dt;
}
Dans la nouvelle méthode GetData () est d'abord vérifié l'existence de la table dans le cache. Si la table n'existe pas if (dt == null) il est créé comme cela a été fait précédemment, mais s'il ya une partie de la connexion à la base et de l'extraction des données est alors complètement ignorée. En tout cas, avant de retourner à la table, il est stocké dans le cache (Cache ["TabellaInCache"] = dt;). Ces petits changements peuvent réduire considérablement le coût du chargement de la page (si vous avez déjà créé un temps clair).
De toute évidence, cette leçon est de vous faire sentir le potentiel de mise en cache de données et d'explorer les différentes façons de la gestion du cache, ses méthodes disponibles et voir ceux qui pourraient être utiles de temps en temps je vous invite à consulter le communiqué officiel de Microsoft .
| |
ASP (Advanced)
Cours complet pour la création de sites Web dynamiques. A partir de 39 €. |
| |
ASP.NET (Cours)
Cours complet pour construire des applications Web à partir de 49 €. |
| |
SQL et bases de données (cours)
Créer et gérer des bases de données relationnelles. A partir de 39 €. |