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

ASP.NET 快取處理類別完整實作指南

     編輯:ASP.NET 基礎

ASP.NET 快取處理類別核心概念

在 ASP.NET 應用程式開發中,合理運用伺服器快取能顯著提升系統效能。本文提供一個功能完整、可直接投入生產環境的 CacheHandler 類別,支援資料的寫入、讀取與移除操作,並針對跨 Session 存取特性進行了優化設計。

核心功能特點

  • 跨 Session 共享:儲存於 ASP.NET Cache 的資料可供所有使用者 Session 存取
  • 唯一性保障:強制要求快取鍵值唯一,避免資料被意外覆寫
  • 永久保存機制:預設不設定過期時間,需透過程式碼主動移除
  • Session 替代方案:專為儲存大型物件設計,解決 Session 記憶體壓力問題

完整程式碼實作

using System;
using System.Collections.Generic;
using System.Web.Caching;
using System.Web;

/// <summary>
/// ASP.NET 伺服器快取讀寫操作類別
/// 為了簡化操作,預設將物件寫入快取且不設定過期時間
/// 請使用 Remove() 方法以程式化方式移除伺服器快取物件
/// 本類別作為儲存大型物件於 Session 的替代方案而建立
/// </summary>
public class CacheHandler 
{
    /// <summary>
    /// 將資料寫入快取
    /// </summary>
    /// <param name="cacheID">快取唯一識別碼</param>
    /// <param name="data">要儲存的物件資料</param>
    /// <returns>寫入是否成功</returns>
    public static bool Write(string cacheID, object data) 
    {
        if (HttpContext.Current == null) return false;
        if (string.IsNullOrEmpty(cacheID)) return false;
        
        HttpRuntime.Cache.Insert(
            cacheID, 
            data, 
            null, 
            Cache.NoAbsoluteExpiration, 
            Cache.NoSlidingExpiration, 
            CacheItemPriority.NotRemovable, 
            null
        );
        return true;
    }

    /// <summary>
    /// 從快取讀取資料
    /// </summary>
    /// <param name="cacheID">快取識別碼</param>
    /// <returns>快取物件,不存在則回傳 null</returns>
    public static object Read(string cacheID) 
    {
        if (HttpContext.Current == null) return null;
        return HttpRuntime.Cache.Get(cacheID);
    }

    /// <summary>
    /// 移除快取資料
    /// </summary>
    /// <param name="cacheID">要移除的快取識別碼</param>
    public static void Remove(string cacheID) 
    {
        if (HttpContext.Current == null) return;
        if (string.IsNullOrEmpty(cacheID)) return;
        HttpRuntime.Cache.Remove(cacheID);
    }
}

最佳實踐建議

實際應用中,建議將唯一的 cacheID 儲存在使用者 Session 中,再透過該識別碼存取快取資料。例如:

// 寫入快取時使用 Session 儲存的唯一識別碼
CacheHandler.Write(Session["MyCacheData"].ToString(), myData);

// 讀取時同樣透過 Session 識別碼
var cachedData = CacheHandler.Read(Session["MyCacheData"].ToString());

這種模式既保證了資料隔離性,又充分發揮了伺服器快取跨 Session 共享的優勢,是處理大型共享資料的理想選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved