目錄
關於緩存的介紹,可以參考這里,寫的非常好。
緩存的分類:
- 客戶端緩存(Client Caching)
- 代理緩存(Proxy Caching)
- 反向代理緩存(Reverse Proxy Caching)
- 服務器緩存(Web Server Caching)
緩存的好處及應用:
- 可以讓如css,js,image,aspx 等資源文件在第二次訪問時讀取本地而不用再次請求服務器端,減少客戶端對服務器資源請求的壓力,加快客戶端響應速度。
- 對於經常使用的數據源,將其存儲在數據緩存中或者內存中,這樣來減少數據庫請求,緩解數據庫壓力。
- 將網站部署在多台計算機上,采用分布式方式處理,可以有效解決多個用戶請求對一台服務器所造成的壓力,加快客戶端請求響應(分布式部署)。
- 將經常訪問但數據經常不更新的頁面,可以將該頁面靜態化處理,有效減少服務器壓力和客戶端響應速度。
當然,上面的只是我個人的見解,如有問題歡迎指正。
ASP.NET 提供了方便的方法來控制緩存。@ OutputCache指令可用於控制頁面輸出緩存
OutputCache 語法:
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None |
ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
VaryByContentEncoding="encodings"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
ProviderName="Provider Name"
%>
OutputCache 屬性:
參考:http://msdn.microsoft.com/zh-cn/library/hdxfb6cy.aspx
- Duration:頁或用戶控件進行緩存的時間(以秒計)。在頁或用戶控件上設置該特性為來自對象的 HTTP 響應建立了一個過期策略,並將自動緩存頁或用戶控件輸出。
- Location:OutputCacheLocation 枚舉值之一。默認值為 Any。
Any:輸出緩存可位於產生請求的瀏覽器客戶端、參與請求的代理服務器(或任何其他服務器)或處理請求的服務器上。此值對應於 HttpCacheability.Public 枚舉值。
Client:輸出緩存位於產生請求的瀏覽器客戶端上。此值對應於 HttpCacheability.Private 枚舉值。
Downstream:輸出緩存可存儲在任何 HTTP 1.1 可緩存設備中,源服務器除外。這包括代理服務器和發出請求的客戶端。
None:對於請求的頁,禁用輸出緩存。此值對應於 HttpCacheability.NoCache 枚舉值。
Server:輸出緩存位於處理請求的 Web 服務器上。此值對應於 HttpCacheability.Server 枚舉值。
ServerAndClient:輸出緩存只能存儲在源服務器或發出請求的客戶端中。代理服務器不能緩存響應。此值對應於 HttpCacheability.Private 和 HttpCacheability.Server 枚舉值的組合。
- CacheProfile:與該頁關聯的緩存設置的名稱。這是可選特性,默認值為空字符串 ("")。
- NoStore:一個布爾值,它決定了是否阻止敏感信息的二級存儲。
- ProviderName:一個字符串值,標識要使用的自定義輸出緩存提供程序。
- Shared:一個布爾值,確定用戶控件輸出是否可以由多個頁共享。默認值為 false。
- SqlDependency: 標識一組數據庫/表名稱對的字符串值,頁或控件的輸出緩存依賴於這些名稱對。請注意,SqlCacheDependency 類監視輸出緩存所依賴的數據庫中的表,因此當更新表中的項時,使用基於表的輪詢時將從緩存中移除這些項。如果以值 CommandNotification: 使用通知(在 Microsoft SQL Server 2005 中),則最終會使用 SqlDependency 類向 SQL Server 2005 服務器注冊查詢通知。
- VaryByCustom: 任何表示自定義輸出緩存要求的文本。如果特性的賦值為 browser,緩存將隨瀏覽器名稱和主要版本信息的不同而異。如果輸入自定義字符串,則必須在應用程序的 Global.asax 文件中重寫 GetVaryByCustomString 方法。
- VaryByHeader: 分號分隔的 HTTP 標頭列表,用於使輸出緩存發生變化。將該特性設為多標頭時,對於每個指定標頭組合,輸出緩存都包含一個不同版本的請求文檔。
- VaryByParam: 分號分隔的字符串列表,用於使輸出緩存發生變化。默認情況下,這些字符串對應於使用 GET 方法特性發送的查詢字符串值,或者使用 POST 方法發送的參數。將該特性設置為多個參數時,對於每個指定參數組合,輸出緩存都包含一個不同版本的請求文檔。可能的值包括 none、星號 (*) 以及任何有效的查詢字符串或 POST 參數名稱。
- VaryByControl:分號分隔的字符串列表,用於改變用戶控件的輸出緩存。這些字符串代表用戶控件中聲明的 ASP.NET 服務器控件的 ID 屬性值。
- VaryByContentEncodings: 以分號分隔的字符串列表,用於更改輸出緩存。將 VaryByContentEncodings 特性用於 Accept-Encoding 標頭,可確定不同內容編碼獲得緩存響應的方式。有關如何指定 Accept-Encoding 標頭的更多信息,請參見 W3C 網站上的 Hypertext Transfer Protocol -- HTTP/1.1(超文本傳輸協議 -- HTTP/1.1)規范的 14.3 節。
關於 OutputCache 的概念就寫到這,后面會寫到每個屬性的使用以及差異化,希望大家多多支持。