OutputCache概念學習


目錄

 

關於緩存的介紹,可以參考這里,寫的非常好。

緩存的分類: 

  • 客戶端緩存(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 響應建立了一個過期策略,並將自動緩存頁或用戶控件輸出。
  • LocationOutputCacheLocation 枚舉值之一。默認值為 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 的概念就寫到這,后面會寫到每個屬性的使用以及差異化,希望大家多多支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM