..
L'emmagatzematge en memòria cau de dades és una eina útil per millorar el rendiment de qualsevol sistema de programari. La idea és posar les dades d'ús freqüent en un dispositiu molt potent. De fet, encara que el temps d'accés als dispositius d'emmagatzematge massiu seguir millorant, per exemple, l'accés a les dades que resideixen en el disc dur és encara molt lent d'accedir-hi mentre són a la memòria. D'aquesta manera posar a disposició les dades més ràpidament utilitzat contribueix significativament a millorar el rendiment de les nostres aplicacions.
En la memòria cau de ASP.NET és paral.lela a les nostres aplicacions, i està disponible a través de HttpContext i System.Web.UI.Page. L'ús de la memòria cau és molt similar al que va ser vist per l'objecte Session, que es pot accedir als objectes en ella a través d'un indexats. A més també es pot controlar la durada del conjunt d'objectes i les connexions entre els objectes en la memòria cau i la font de dades físiques.
La gestió de la memòria cau en ASP.NET és molt simple per veure com procedir amb un exemple. Suposeu que té un GetData () que realitza una connexió a una base de dades i retorna una taula de dades
protegits DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
Cadena strConnection = "Cadena de connexió a la base de dades";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
utilitzant (DbConnection CONN f.CreateConnection = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand comanda = f.CreateCommand ();
command.CommandText = "Select * from TableName";
command.Connection = conn;
IDataReader lector Command.ExecuteReader = ();
dt.Load (lector);
reader.Close ();
conn.Close ();
}
tornar dt;
}
També tenim un altre mètode BindData () que associa les dades retornats per GetData () a un present DataList en un del nostre formulari web
BindData protegits DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource dt =;
this.DataBind ();
tornar dt;
}
Un altre mètode que necessitem per al nostre exemple és CreaTabella que retorna l'estructura d'una taula d'acord a un patró determinat
CreaTabella protegits DataTable (DataTable tableSchema)
{
DataTable taula = new DataTable ();
foreach (DataColumn tableSchema.Columns dc)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
retorn de taula;
}
Mètodes GetData () i BindData () es diu en l'esdeveniment Page_Load de la següent manera
protected void Page_Load (object sender, EventArgs e)
{
if (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
Session ["elementiTabella"] = elementiTabella;
}
}
i cada vegada que es crea la pàgina que es connecti a la base de dades i torna a carregar les dades.
En un context on arriben sol.licituds des del client del que podria ser acceptable per a aplicacions de mida per satisfer les demandes de milers de clients no és acceptable.
De fet, les operacions d'accés a la base de dades regal molt costós en temps i ha de ser minimitzat.
En aquest punt podem fer algunes estimacions de la naturalesa de les dades gestionades per la nostra aplicació. Només em preguntava si el que necessita per carregar les dades cada vegada que si no canvien sovint. Si hi ha aquesta necessitat, podem pensar en l'emmagatzematge d'aquestes dades a un mitjà que permet l'accés als mateixos molt ràpid i sense connexions a la base de dades (per exemple, la memòria interna de l'equip). D'aquesta manera, l'aplicació es reunirà moltes peticions més concurrents dels clients. Òbviament, si les dades processades per la nostra aplicació que canvia molt sovint aquest enfocament no seria apropiat.
Els passos per l'emmagatzematge en memòria cau de dades són els següents:
En aquest punt anem a canviar els mètodes que vam veure al principi de la lliçó per a la gestió d'emmagatzematge en memòria cau de dades. Aquí hi ha el mètode GetData () modificat
protegits DataTable GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
Cadena strConnection = "Cadena de connexió a la base de dades";
DbProviderFactory DbProviderFactories.GetFactory = f ("System.Data.SqlClient");
utilitzant (DbConnection CONN f.CreateConnection = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand comanda = f.CreateCommand ();
command.CommandText = "Select * from TableName";
command.Connection = conn;
IDataReader lector Command.ExecuteReader = ();
dt.Load (lector);
reader.Close ();
conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
tornar dt;
}
En el nou mètode GetData () primer es comprova l'existència de la taula en la memòria cau. Si la taula no existeix si (dt == null) es crea com es va fer anteriorment, però si hi ha una part de la connexió de base de dades i extracció de dades és completament ignorat. En qualsevol cas, abans de tornar a la taula que s'emmagatzema en la memòria cau (Cache ["TabellaInCache"] dt =;). Aquests petits canvis poden reduir significativament el cost de carregar la pàgina (si ja ha creat un moment clar).
És evident que aquesta lliçó és fer que vostè sent el potencial d'emmagatzematge en memòria cau de dades i per explorar les diferents formes de gestió de la memòria cau, els seus mètodes disponibles i veure quines podrien ser útils de tant en tant els convido a consultar l'oficial de Microsoft .
| |
ASP (Advanced)
Cicle complet per a la creació de llocs web dinàmics. A partir de 39 €. |
| |
ASP.NET (Curs)
Curs complet per construir aplicacions web a partir de 49 €. |
| |
SQL i bases de dades (Curs)
Crear i gestionar bases de dades relacionals. A partir de 39 €. |