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

ASP.NET 2.0 頁面輸出快取完整指南:@OutputCache 指令與 HttpCachePolicy 深度解析

     編輯:關於ASP.NET

頁面輸出快取將完整呈現的 HTML 內容儲存在伺服器記憶體中,後續請求直接輸出快取內容,跳過頁面生命週期,大幅縮短回應時間。適用於資料更新頻率低、但生成成本高的頁面。ASP.NET 2.0 提供兩種設定方式:宣告式的 @OutputCache 指令與程式化的 HttpCachePolicy 類別。

@OutputCache 指令完整屬性表

<%@ OutputCache
  CacheProfile=""
  NoStore="True|False"
  Duration="#ofseconds"
  Shared="True|False"
  Location="Any|Client|Downstream|Server|None|ServerAndClient"
  SqlDependency="database/table name pair|CommandNotification"
  VaryByControl="controlname"
  VaryByCustom="browser|customstring"
  VaryByHeader="headers"
  VaryByParam="parametername"
%>

核心屬性詳細說明

屬性說明備註
Duration快取持續秒數(必填)設定 HTTP 過期原則,單位為秒
Location快取儲存位置預設 Any(客戶端、Proxy、伺服器皆可);用戶控件不支援
VaryByParam依查詢字串參數變化快取如 "id" 或 "*"(所有參數);用戶控件需搭配 VaryByControl
VaryByControl依用戶控件屬性值變化快取僅用戶控件支援;以分號分隔控件 ID
VaryByCustom自定義快取變化邏輯需在 Global.asax 覆寫 GetVaryByCustomString()
VaryByHeader依 HTTP 標頭變化快取如 "User-Agent" 區分瀏覽器類型
SqlDependencySQL 資料庫相依性快取表格變更時自動使快取失效;支援 SQL Server 2005 查詢通知
CacheProfile引用 Web.config 中的快取設定檔僅頁面支援;需對應 <outputCacheSettings> 區段
NoStore防止敏感資訊被次級儲存相當於 Response.Cache.SetNoStore();用戶控件不支援
Shared用戶控件輸出是否可跨頁共享預設 false;僅用戶控件支援

進階應用場景

  • 資料庫驅動快取失效:設定 SqlDependency="Northwind:Products",當 Products 表異動時自動清除快取。
  • 自定義快取變化:實作 GetVaryByCustomString 依使用者角色、語言等動態產生快取鍵值。
  • 程式化控制:透過 Response.Cache 屬性(HttpCachePolicy 實例)動態設定快取原則,適合複雜邏輯判斷。

善用頁面輸出快取是提升 ASP.NET 應用程式效能最直接的手段之一,關鍵在於精準設定變化條件,避免提供過時資料。

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