首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET GridView 結合 Cache 快取提升效能:DataSet 快取 2 分鐘範例

     編輯:關於ASP.NET

針對不頻繁變動的資料 (如類別、字典表),將 DataSet 存入 System.Web.Caching.Cache 可大幅減少資料庫查詢與序列化開銷。本文示範 GridView 綁定快取資料的完整模式。

核心代碼

using System.Data.SqlClient;

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack) BindData();
}

private void BindData()
{
    if (Cache["CategoriesCache"] == null)
    {
        using (var con = new SqlConnection(
            "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|NORTHWND.MDF;Integrated Security=True;User Instance=True"))
        using (var ad = new SqlDataAdapter("SELECT * FROM Categories", con))
        {
            var ds = new DataSet();
            ad.Fill(ds);
            // 快取 2 分鐘,絕對過期
            Cache.Insert("CategoriesCache", ds, null,
                DateTime.Now.AddMinutes(2), TimeSpan.Zero);
            GridView1.DataSource = ds;
        }
    }
    else
    {
        GridView1.DataSource = (DataSet)Cache["CategoriesCache"];
    }
    GridView1.DataBind();
}

Cache.Insert 參數詳解

參數說明
key快取鍵值,用於後續查找
value要快取的物件 (此處為 DataSet)
dependencies檔案/快取鍵依賴,變更時自動失效,無則 null
absoluteExpiration絕對過期時間 (建議用 DateTime.UtcNow 避免夏令時問題)
slidingExpiration滑動過期間隔,TimeSpan.Zero 表示不使用滑動過期

以上範例採用 絕對過期 2 分鐘,適合資料極少變動場景。若需資料變更即時失效,可結合 SqlCacheDependency (SQL Server 2005+) 或自訂依賴項。

進階建議

  • 快取鍵命名規範:"Categories:All"、"Product:{id}"。
  • 資料更新時主動 Cache.Remove(key) 或 Cache[key] = newData。
  • 避免快取巨大 DataSet 導致記憶體壓力,考慮分頁快取或只快取 DTO 集合。
  • 分散式環境請改用 Redis / NCache 等分散式快取。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved