當用戶訪問頁面時,整個頁面將會被服務器保存在內存中,這樣就對頁面進行了緩存。當用戶再次訪問該頁,頁面不會再次執行數據操做,頁面首先會檢查服務器中是否存在緩存,若是緩存存在,則直接從緩存中獲取頁面信息,若是頁面不存在,則建立緩存。瀏覽器
頁面輸出緩存適用於那些數據量較多,而不會進行過多的事件操做的頁面,若是一個頁面須要執行大量的事件更新,以及數據更新,則並不能使用頁面輸出緩存。使用@OutputCatch指令可以聲明頁面輸出緩存,示例代碼以下所示。緩存
<%@ OutputCache Duration="120" VaryByParam="none" %>服務器
上述代碼使用@OutputCatch指令聲明瞭頁面緩存,該頁面將被緩存120秒。@OutputCatch指令包括10個屬性,經過這些屬性可以分別爲頁面的不一樣狀況進行緩存設置,經常使用的屬性以下所示:性能
q CacheProfile:獲取或設置OutputCacheProfile名稱。學習
q Duration:獲取或設置緩存項須要保留在緩存中的時間。spa
q VaryByHeader:獲取或設置用於改變緩存項的一組都好分隔的HTTP標頭名稱。.net
q Location:獲取或設置一個值,該值肯定緩存項的位置,包括Any、Clint、Downstream、None、Server和ServerAndClient。默認值爲Any。blog
q VaryByControl:獲取或設置一簇分好分隔的控件標識符,這些標識符包含在當前頁或用戶控件內,用於改變當前的緩存項。事件
q NoStore:獲取或設置一個值,該值肯定是否設置了「Http Cache-Control:no-store」指令。內存
q VaryByCustom:獲取輸出緩存用來改變緩存項的自定義字符串列表。
q Enabled:獲取或設置一個值,該值指示是否對當前內容啓用了輸出緩存。
q VaryByParam:獲取查詢字符串或窗體POST參數的列表。
經過設置相應的屬性,能夠爲頁面設置相應的緩存,當須要爲Default.aspx設置緩存項時,可使用VaryByParam屬性進行設置,示例代碼以下所示。
<%@ OutputCache Duration="120" VaryByParam="none" %>
上述代碼使用了Duration屬性和VarByParam屬性設置了當前頁的緩存屬性。爲一個頁面進行總體的緩存設置每每是沒有必要的,經常還會形成困擾,例如Default.aspx?id=1和Default.aspx?id=100在緩存時可能呈現的頁面是相同的,這每每不是開發人員所但願的。經過配置VarByParam屬性可以指定緩存參數,示例代碼以下所示。
<%@ OutputCache Duration="120" VaryByParam="id" %>
上述代碼則經過參數id進行緩存,當id項不一樣時,ASP.NET所進行的頁面緩存也不盡相同。這樣保證了Default.aspx?id=1和Default.aspx?id=100在緩存時所顯示的頁面並不一致。VarByHeader和VarByCustom主要用於根據訪問頁面的客戶端對頁面的外觀或內容進行自定義。在ASP.NET中,一個頁面可能須要爲PC用戶和MOBILE用戶呈現輸出,所以能夠經過客戶端的版本不一樣來緩存不一樣的數據,示例代碼以下所示。
<%@ OutputCache Duration="120" VaryByParam="none" VaryByCustom="browser" %>
上述代碼則爲每一個瀏覽器單獨設置了緩存條目。
學習自http://blog.csdn.net/rewoshengqi/article/details/5748405