..
Dáta do vyrovnávacej pamäte je užitočný nástroj pre zlepšenie výkonu akéhokoľvek softvéru systému. Cieľom je dať najčastejšie používaných dát vo veľmi silnej zariadení. V skutočnosti, aj keď doba prístupu k mass storage zariadenia sa naďalej zlepšuje, napríklad prístup k dáta uložené na pevnom disku, prevádzka je stále oveľa pomalší, než sa k nim, zatiaľ čo oni sú v pamäti. Tak, aby boli dáta k dispozícii rýchlejšie použitie významne prispieva k zlepšeniu výkonnosti našich aplikácií.
V medzipamäte ASP.NET je rovnobežná s našou aplikáciou a je k dispozícii prostredníctvom HttpContext a System.Web.UI.Page. Použitie cache je veľmi podobný tomu, čo bolo vidieť na zasadnutí objektu, je možné prístup k objektom v ňom cez Indexer. Okrem toho môžete tiež nastaviť dobu trvania súboru objektov a spojenie medzi objekty v cache a fyzické zdroje dát.
Vyrovnávacie konanie v ASP.NET je veľmi jednoduché, ako sa bude postupovať pri príklad. Predpokladajme, že máte GetData (), ktorá umožňuje pripojenie k databáze a vráti DataTable
chránené DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
strConnection String = "reťazec pripojenia k DB";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
použitie (Prepojenie DB Conn = f.CreateConnection ())
{
conn.ConnectionString = strConnection;
conn.Open ();
F. CreateCommand DbCommand command = ();
command.CommandText = "Select * from TableName";
command.Connection Conn =;
Command.ExecuteReader IDataReader reader = ();
dt.Load (čitateľ)
reader.Close ();
Conn.Close ();
}
návrat dt;
}
Máme aj ďalšie metódu BindData (), ktorá mapuje dát vrátených GetData () pre datalist súčasnej dobe v jednom z našich webového formulára
BindData chránené DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource = dt;
this.DataBind ();
návrat dt;
}
ďalšie metóda, ktorá potrebujeme pre náš príklad je CreaTabella, ktorá vracia štruktúru tabuľky podľa určitého vzoru
CreaTabella chránené DataTable (DataTable tableSchema)
{
DataTable tabuľka = new DataTable ();
foreach (DataColumn dc tableSchema.Columns)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
návrat tabuľke;
}
Metódy GetData () a BindData () sú volány v udalosti Page_Load takto
protected void Page_Load (object sender, EventArgs e)
{
if (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
Session ["elementiTabella"] = elementiTabella;
}
}
a potom zakaždým, keď sa stránka je vytvorená pripojenie k databáze a načíta dáta.
V situácii, keď otázkach na niekoľko klientov to môže byť prijateľné pre aplikácie, veľkosti, aby spĺňali požiadavky tisícov klientov, to nie je prijateľné.
V skutočnosti, operácie pre prístup k databáze veľmi drahý darček v čase a malo by byť minimalizované.
Na tomto mieste môžeme niektoré odhady z povahy údajov spravovaných našej aplikácie. Len či budete potrebovať pre aktualizáciu dát zakaždým, keď sa často nemení. Ak je to nutné nie je k dispozícii, môžeme myslieť na ukladanie týchto dát na médium, ktoré umožňuje prístup k rovnakým veľmi rýchlo a bez pripojenia k databáze (napríklad počítače vnútornej pamäte). Týmto spôsobom aplikácie by sa stretol oveľa viac súbežných požiadaviek klientov. Je zrejmé, že v prípade, že údaje spracované našej aplikácie by sa menia veľmi často tento prístup by nebolo vhodné.
Kroky pre cache dát sú:
V tejto chvíli sa chystáme zmeniť metódy, ktoré sme videli na začiatku tejto triedy pre spracovanie dát do vyrovnávacej pamäte. Tu je GetData () Metóda modifikované
chránené DataTable GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
strConnection String = "reťazec pripojenia k DB";
DbProviderFactory DbProviderFactories.GetFactory f = ("System.Data.SqlClient");
použitie (Prepojenie DB Conn = f.CreateConnection ())
{
conn.ConnectionString = strConnection;
conn.Open ();
F. CreateCommand DbCommand command = ();
command.CommandText = "Select * from TableName";
command.Connection Conn =;
Command.ExecuteReader IDataReader reader = ();
dt.Load (čitateľ)
reader.Close ();
Conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
návrat dt;
}
V novej metóde GetData () je prvá kontroluje existenciu tabuľky v cache. Ak je v tabuľke neexistuje if (dt == null) je vytvorený, ako tomu bolo predtým, ale ak je súčasťou databázy pripojenie a získavanie dát je úplne obísť. V každom prípade, než sa vráti k stolu je uložený vo vyrovnávacej pamäti (Cache ["TabellaInCache"] = dt;). Tieto malé zmeny môžu výrazne znížiť náklady na zaťaženie (ak ste už vytvorili jasný časový).
Je zrejmé, že táto lekcia je, aby sa cítite potenciál cache dát a pozrieť sa na rôzne spôsoby, ako riadiť cache, dostupné metódy a zistiť, ktoré z nich môžu byť užitočné čas od času vás pozývam nahliadnuť do Úradného Microsoft .
| |
ASP (Advanced)
Celý kurz pre tvorbu dynamických webových stránok. Od 39 €. |
| |
ASP.NET (kurz)
Celý kurz pre tvorbu webových aplikácií od 49 €. |
| |
SQL a databázy (kurz)
Vytváranie a správa relačnej databázy. Od 39 €. |