..
Data do mezipaměti je užitečný nástroj pro zlepšení výkonu jakéhokoli softwaru systému. Cílem je dát nejčastěji používaných dat ve velmi silné zařízení. Ve skutečnosti, i když doba přístupu k mass storage zařízení se nadále zlepšuje, například přístup k data uložená na pevném disku, provoz je stále mnohem pomalejší, než se k nim, zatímco oni jsou v paměti. Tak, aby byla data k dispozici rychleji použití významně přispívá ke zlepšení výkonnosti našich aplikací.
V mezipaměti ASP.NET je rovnoběžná s naší aplikací a je k dispozici prostřednictvím HttpContext a System.Web.UI.Page. Použití cache je velmi podobný tomu, co bylo vidět na zasedání objektu, je možné přístup k objektům v něm přes indexer. Kromě toho můžete také nastavit dobu trvání souboru objektů a spojení mezi objekty v cache a fyzické zdroje dat.
Vyrovnávací řízení v ASP.NET je velmi jednoduché, jak se bude postupovat při příklad. Předpokládejme, že máte GetData (), která umožňuje připojení k databázi a vrátí DataTable
chráněny DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
strConnection String = "řetězec připojení k DB";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
použití (DBConnection 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 (čtenář)
reader.Close ();
Conn.Close ();
}
návrat dt;
}
Máme také další metodu BindData (), která mapuje dat vrácených GetData () pro datalist současné době v jednom z našich webového formuláře
BindData chráněné DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource = dt;
this.DataBind ();
návrat dt;
}
další metoda, která potřebujeme pro náš příklad je CreaTabella, která vrací strukturu tabulky podle určitého vzoru
CreaTabella chráněné DataTable (DataTable tableSchema)
{
DataTable tabulka = new DataTable ();
foreach (DataColumn dc tableSchema.Columns)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
návrat tabulce;
}
Metody GetData () a BindData () jsou volány v události 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 pak pokaždé, když se stránka je vytvořena připojení k databázi a načte data.
V situaci, kdy dotazech na několik klientů to může být přijatelné pro aplikace, velikosti, aby splňovaly požadavky tisíců klientů, to není přijatelné.
Ve skutečnosti, operace pro přístup k databázi velmi drahý dárek v čase a mělo by být minimalizováno.
Na tomto místě můžeme některé odhady z povahy údajů spravovaných naší aplikace. Jen jestli budete potřebovat pro aktualizaci dat pokaždé, když se často nemění. Je-li to nutné není k dispozici, můžeme myslet na ukládání těchto dat na médium, které umožňuje přístup ke stejným velmi rychle a bez připojení k databázi (například počítače vnitřní paměti). Tímto způsobem aplikace by se setkal mnohem více souběžných požadavků klientů. Je zřejmé, že v případě, že údaje zpracované naší aplikace by se mění velmi často tento přístup by nebylo vhodné.
Kroky pro cache dat jsou:
V tuto chvíli se chystáme změnit metody, které jsme viděli na začátku této třídy pro zpracování dat do mezipaměti. Zde je GetData () Metoda modifikované
chráněny DataTable GetData ()
{
DataTable dt = null;
dt = (DataTable) Cache ["TabellaInCache"];
if (dt == null)
{
dt = new DataTable ();
strConnection String = "řetězec připojení k DB";
DbProviderFactory DbProviderFactories.GetFactory f = ("System.Data.SqlClient");
použití (DBConnection 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 (čtenář)
reader.Close ();
Conn.Close ();
}
}
Cache ["TabellaInCache"] = dt;
návrat dt;
}
V nové metodě GetData () je první kontroluje existenci tabulky v cache. Pokud je v tabulce neexistuje if (dt == null) je vytvořen, jako tomu bylo dříve, ale pokud je součástí databáze připojení a získávání dat je zcela obejít. V každém případě, než se vrátí ke stolu je uložen ve vyrovnávací paměti (Cache ["TabellaInCache"] = dt;). Tyto malé změny mohou výrazně snížit náklady na načtení stránky (pokud jste již vytvořili jasný časový).
Je zřejmé, že tato lekce je, aby se cítíte potenciál cache dat a podívat se na různé způsoby, jak řídit cache, dostupné metody a zjistit, které z nich mohou být užitečné čas od času vás zvu nahlédnout do Úředního Microsoft .
| |
ASP (Advanced)
Celý kurz pro tvorbu dynamických webových stránek. Od 39 €. |
| |
ASP.NET (kurz)
Celý kurz pro tvorbu webových aplikací od 49 €. |
| |
SQL a databáze (kurz)
Vytváření a správa relační databáze. Od 39 €. |