เมื่อใช้แคชในอดีต ฉันมักจะระมัดระวังเกี่ยวกับความไม่สอดคล้องกันระหว่างเวอร์ชันข้อมูลในแคชและเวอร์ชันข้อมูลในฐานข้อมูล แม้ว่าการพึ่งพาแคชของไฟล์ที่นำไปใช้ผ่านทริกเกอร์ + ไฟล์ IO ก็สามารถอัปเดตข้อมูลที่แคชไว้ได้ทันเวลาเช่นกัน แอปพลิเคชันสร้างไฟล์ IO มันไม่ประหยัดมากนักและประสิทธิภาพของทริกเกอร์ไม่สูงมาก ดังนั้นเมื่อเพิ่ม ลบ หรือแก้ไข มักจะทำได้โดยการลบค่าคีย์แคช แต่อาจมีการละเว้นบางประการ SqlCacheDependency ถูกนำไปใช้ใน asp.net 2.0 บทความนี้อธิบายวิธีการใช้ SqlCacheDependency ใน asp.net 2.0:
ขั้นแรก เพิ่มรหัสต่อไปนี้ลงในไฟล์โหนด web.config system.web:
<แคช>
<sqlCacheDependency ที่เปิดใช้งาน = "true">
<ฐานข้อมูล>
<เพิ่มชื่อ = "AtlasDemoDb" ConnectionStringName = "AtlasDemoDbConnectionString" pollTime = "12000" ></ เพิ่ม>
</ฐานข้อมูล>
</sqlCacheDependency>
</แคช>
ด้วยวิธีนี้ ฐานข้อมูลที่ขึ้นอยู่กับแคชได้รับการกำหนดค่า และ EnableCaching ของออบเจ็กต์ ObjectDataSource ในเพจถูกตั้งค่าเป็นจริง จากนั้นตั้งค่าคุณสมบัติ SqlCacheDependency เป็น AtlasDemoDb:SimpleDemo1 โดย AtlasDemoDb คือชื่อฐานข้อมูลแคชที่กำหนดค่าในเว็บ .config และ SimpleDemo1 เป็นชื่อตารางภายใต้ฐานข้อมูล
เช่นนี้ระบบจะมีปัญหาดังต่อไปนี้ด้วย:
ไม่ได้เปิดใช้งานฐานข้อมูล 'AtlasDemoDb' สำหรับการแจ้งเตือนแคช SQL
เมื่อต้องการเปิดใช้งานฐานข้อมูลสำหรับการแจ้งเตือนแคช SQL ให้ใช้วิธีการ System.Web.Caching.SqlCacheDependencyAdmin.EnableNotifications หรือเครื่องมือบรรทัดคำสั่ง aspnet_regsql หากต้องการใช้เครื่องมือนี้ ให้เรียกใช้ "aspnet_regsql.exe -?" เพื่อดูรายละเอียด
ตามที่กล่าวไว้ข้างต้น การเรียกใช้ aspnet_regsql.exe เป็นเรื่องยาก คุณสามารถกรอกข้อมูลลงในเหตุการณ์ Page_Load
System.Web.Caching.SqlCacheDependencyAdmin.EnableTableForNotifications (System.Configuration.ConfigurationManager.ConnectionStrings ["AtlasDemoDbConnectionString"].ConnectionString, "SimpleDemo1");
วิธีนี้คุณสามารถใช้ SqlCacheDependency ฉันจะทดสอบประสิทธิภาพของวิธีนี้พรุ่งนี้ วันนี้ง่วงมากขอไปนอนก่อนนะ
http://www.cnblogs.com/jillzhang/archive/2006/08/15/477914.html