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

ASP.NET 2.0 實作 Oracle 資料庫快取相依策略

     編輯:Oracle 資料庫基礎

突破 SQL Server 限制,實現 Oracle 快取相依

ASP.NET 2.0 內建快取相依功能,但僅支援 SQL Server。若使用 Oracle 資料庫,可巧妙結合「檔案相依」與「Oracle 觸發器」達成相同效果。

核心設計概念

  1. 將頁面快取設為相依於特定文字檔(如 TextFile.txt)
  2. 在 Oracle 目標資料表建立觸發器
  3. 資料異動時,觸發器修改該文字檔內容
  4. 檔案變更觸發快取失效,下次請求重新產生頁面

實作步驟範例

1. 設定 ASP.NET 頁面檔案相依

protected void Page_Load(object sender, EventArgs e) {
    Label1.Text = "CacheByOracleDependency:" + DateTime.Now.ToString();
    string filePath = Server.MapPath("TextFile.txt");
    Response.AddFileDependency(filePath);
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetValidUntilExpires(true);
}

2. Oracle 端設定與觸發器建立

需先設定 utl_file_dir 參數或建立 Directory 物件授權:

-- 方法一:修改 INIT.ORA(需重啟資料庫)
utl_file_dir='E:\CSharp\CacheByOracleDependncy'

-- 方法二:建立 Directory 物件(9i 以上適用)
CREATE OR REPLACE DIRECTORY FILEPATH AS 'E:\CSharp\CacheByOracleDependncy';
GRANT READ ON DIRECTORY FILEPATH TO PUBLIC;

建立觸發器,資料異動時寫入系統時間至文字檔:

CREATE OR REPLACE TRIGGER "SCOTT"."TEST_CACHE_BY_Oracle_DEPENDNCY"
AFTER INSERT OR UPDATE OR DELETE OF "DEPTNO", "DNAME", "LOC" ON "SCOTT"."DEPT"
DECLARE
    file_handle utl_file.file_type;
BEGIN
    file_handle := utl_file.fopen('FILEPATH','TextFile.txt','w');
    IF utl_file.is_open(file_handle) THEN
        utl_file.put_line(file_handle, to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'));
    END IF;
    utl_file.fclose(file_handle);
EXCEPTION
    WHEN OTHERS THEN
        IF utl_file.is_open(file_handle) THEN
            utl_file.fclose(file_handle);
        END IF;
END;

驗證測試

頁面每 120 秒自動刷新;手動修改 DEPT 表資料後,頁面立即更新,證明快取相依機制運作正常。

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