..
แคชข้อมูลเป็นเครื่องมือที่มีประโยชน์สำหรับการปรับปรุงประสิทธิภาพของระบบซอฟต์แวร์ใด ๆ ความคิดคือการที่จะนำข้อมูลที่ใช้บ่อยในอุปกรณ์ที่มีประสิทธิภาพมาก ในความเป็นจริงถึงแม้ว่าเวลาในการเข้าถึงอุปกรณ์จัดเก็บข้อมูลจำนวนมากอย่างต่อเนื่องเพื่อปรับปรุงตัวอย่างเช่นการเข้าถึงข้อมูลที่อาศัยอยู่ในฮาร์ดไดรฟ์ยังคงเป็นมากช้ากว่าที่เข้าถึงพวกเขาในขณะที่พวกเขาอยู่ในหน่วยความจำ ดังนั้นจึงทำให้มีข้อมูลที่ใช้งานได้รวดเร็วขึ้นอย่างมีนัยสำคัญในการปรับปรุงประสิทธิภาพของการใช้งานของเรา
ในแคชของ ASP.NET จะขนานไปกับการใช้งานของเราและสามารถใช้ได้ผ่าน HttpContext และ System.Web.UI.Page ใช้แคชจะคล้ายกันมากกับสิ่งที่เห็นสำหรับวัตถุ Session ที่คุณสามารถได้รับการเข้าถึงวัตถุในมันผ่านดัชนี นอกจากนี้คุณยังสามารถควบคุมระยะเวลาของการตั้งค่าของวัตถุและการเชื่อมต่อระหว่างวัตถุที่อยู่ในแคชและแหล่งข้อมูลทางกายภาพ
การจัดการแคชใน ASP.NET เป็นเรื่องง่ายมากที่จะเห็นวิธีการดำเนินการกับตัวอย่าง สมมติว่าคุณมี GetData () วิธีการที่ทำให้การเชื่อมต่อกับฐานข้อมูลและส่งกลับ DataTable
ป้องกัน DataTable GetData ()
{
DataTable dt = null;
dt = new DataTable ();
strConnection String ="สตริงการเชื่อมต่อไปยัง DB";
DbProviderFactory f =
DbProviderFactories.GetFactory ("System.Data.SqlClient");
ใช้ (DbConnection f.CreateConnection conn = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand คำสั่ง = f.CreateCommand ();
command.CommandText ="* เลือกจาก tablename";
command.Connection = conn;
IDataReader อ่าน = Command.ExecuteReader ();
dt.Load (Reader);
reader.Close ();
conn.Close ();
}
กลับ dt;
}
เรายังมีวิธีอื่น BindData () ที่ร่วมข้อมูลที่ส่งกลับโดย GetData () ที่จะนำเสนอ DataList ในหนึ่งในแบบฟอร์มบนเว็บของเรา
BindData ป้องกัน DataTable ()
{
DataTable dt;
this.GetData dt = ();
this.DataList1.DataSource dt =;
this.DataBind ();
กลับ dt;
}
วิธีการที่เราต้องการสำหรับตัวอย่างของเราก็คือ CreaTabella ที่ส่งกลับโครงสร้างของตารางให้เป็นไปตามรูปแบบบาง
CreaTabella ป้องกัน DataTable (DataTable tableSchema)
{
DataTable table = ใหม่ DataTable ();
foreach (DataColumn dc tableSchema.Columns)
{
tabella.Columns.Add (dc.ColumnName,
dc.DataType);
}
กลับตาราง;
}
วิธีการ GetData () และ BindData () จะเรียกว่าในการ Page_Load เหตุการณ์ดังต่อไปนี้
การป้องกันถือเป็นโมฆะ Page_Load (ผู้ส่งวัตถุ, EventArgs e)
{
ถ้า (IsPostBack)
{
DataTable dt = BindData ();
DataTable elementiTabella this.CreaTabella = (dt);
session ["elementiTabella"] = elementiTabella;
}
}
แล้วครั้งหน้าจะมีการสร้างแต่ละครั้งที่คุณเชื่อมต่อกับฐานข้อมูลและโหลดข้อมูลที่
ในบริบทที่การร้องขอมาจากภายในของลูกค้าสิ่งที่อาจจะเป็นที่ยอมรับสำหรับการใช้งานขนาดใหญ่เพื่อตอบสนองความต้องการของลูกค้าหลายพันรายที่นี้ไม่ยอมรับ
ในความเป็นจริงของการดำเนินงานการเข้าถึงฐานข้อมูลของที่ระลึกมีราคาแพงมากในเวลาและควรจะลดลง
ณ จุดนี้เราสามารถทำประมาณการบางส่วนของลักษณะของข้อมูลที่จัดการโดยโปรแกรมประยุกต์ของเรา เพียงแค่สงสัยว่าถ้าคุณจำเป็นต้องโหลดข้อมูลทุกครั้งที่หากพวกเขาไม่เปลี่ยนแปลงบ่อย หากมีดังกล่าวต้องมีที่เราสามารถคิดของการจัดเก็บข้อมูลดังกล่าวในสื่อที่ช่วยให้การเข้าถึงเดียวกันอย่างรวดเร็วและโดยไม่ต้องเชื่อมต่อไปยังฐานข้อมูล (ตัวอย่างเช่นคอมพิวเตอร์ของหน่วยความจำภายใน) เป็น ในวิธีนี้โปรแกรมจะตอบสนองการร้องขอพร้อมกันมากขึ้นจากลูกค้า เห็นได้ชัดว่าหากข้อมูลที่ประมวลผลโดยโปรแกรมของเราจะเปลี่ยนบ่อยมากวิธีการนี้จะไม่เหมาะสม
ขั้นตอนในการทำแคชข้อมูลมีดังนี้ :
ณ จุดนี้เรากำลังจะเปลี่ยนวิธีการที่เราเห็นที่จุดเริ่มต้นของบทนี้สำหรับการจัดการข้อมูลแคช ที่นี่วิธีการ GetData () ที่ถูกปรับเปลี่ยนเป็น
ป้องกัน DataTable GetData ()
{
DataTable dt = null;
แคช dt = (DataTable) ["TabellaInCache"];
ถ้า (DT == null)
{
dt = new DataTable ();
strConnection String ="สตริงการเชื่อมต่อไปยัง DB";
DbProviderFactory DbProviderFactories.GetFactory = f ("System.Data.SqlClient");
ใช้ (DbConnection f.CreateConnection conn = ())
{
conn.ConnectionString strConnection =;
conn.Open ();
DbCommand คำสั่ง = f.CreateCommand ();
command.CommandText ="* เลือกจาก tablename";
command.Connection = conn;
IDataReader อ่าน = Command.ExecuteReader ();
dt.Load (Reader);
reader.Close ();
conn.Close ();
}
}
แคช ["TabellaInCache"] = dt;
กลับ dt;
}
ใน GetData วิธีการใหม่ () มีการตรวจสอบก่อนการดำรงอยู่ของตารางที่อยู่ในแคช ถ้าตารางไม่ได้อยู่ถ้า (DT == null) มันถูกสร้างขึ้นดังที่ทำก่อนหน้านี้ แต่ถ้ามีเป็นส่วนหนึ่งของการเชื่อมต่อฐานข้อมูลและข้อมูลที่สกัดคือ bypassed สมบูรณ์ ในกรณีใด ๆ ก่อนที่จะกลับไปที่ตารางจะถูกเก็บไว้ในแคช (Cache ["TabellaInCache"] = dt;) เหล่านี้การเปลี่ยนแปลงเล็กอย่างมีนัยสำคัญสามารถลดต้นทุนการโหลดหน้าเว็บ (ถ้าคุณได้สร้างไว้แล้วเป็นช่วงเวลาที่ชัดเจน)
เห็นได้ชัดว่าบทเรียนนี้จะทำให้คุณมีความรู้สึกที่มีศักยภาพของแคชของข้อมูลและการสำรวจรูปแบบต่างๆเพื่อการจัดการแคช, วิธีการที่ใช้ได้และดูว่าคนที่อาจจะมีประโยชน์เวลาผมขอเชิญคุณเพื่อให้คำปรึกษาอย่างเป็นทางการของไมโครซอฟท์ .
| |
ASP (Advanced)
หลักสูตรเต็มสำหรับการสร้างเว็บไซต์แบบไดนามิก จาก 39 € |
| |
ASP.NET (หลักสูตร)
หลักสูตรเต็มสำหรับสร้างเว็บแอพพลิเคชันจาก 49 € |
| |
SQL และฐานข้อมูล (หลักสูตร)
การสร้างและจัดการฐานข้อมูลเชิงสัมพันธ์ จาก 39 € |