Asp.net 緩衝(二)–設定頁的可緩衝性

來源:互聯網
上載者:User

頁或使用者控制項的可緩衝性定義可以在什麼樣的 HTTP 1.1 Internet 裝置上緩衝文檔。這些裝置包括髮出請求的用戶端,響應請求的 Web 服務器,以及請求或響應流中任何具有緩衝功能的裝置(例如Proxy 伺服器)。當 Web 服務器發送響應時,在它傳遞的所有資訊中包括一個 Cache-Control HTTP 標題,該標題定義可在其上緩衝文檔的裝置。ASP.NET 在 HttpCacheability 枚舉中定義這些值。該枚舉具有六個值,其中四個值直接映射為 Cache-Control HTTP 標題設定,另外兩個特殊值分別為 HttpCacheability.ServerAndPrivateHttpCacheability.ServerAndNoCacheServerAndPrivate 只允許將響應緩衝在原伺服器和請求用戶端上。而 ServerAndNoCache 只允許將響應緩衝在原伺服器上。

根據應用程式的需要,您可以選擇定義哪些裝置可以緩衝特定的頁,哪些裝置不能緩衝特定的頁。例如,您可能希望使用者登入頁的可緩衝性設定不同於顯示產品選擇的目錄頁。對於登入頁,出於安全方面的考慮,您可能希望只將頁緩衝在伺服器上,而目錄頁可以緩衝在任何支援緩衝的裝置上。

通過將 Location 屬性包括在 @ OutputCache 指令中並指定一個 OutputCacheLocation 枚舉值,可以以聲明方式設定頁輸出的可緩衝性。

通過使用 HttpCachePolicy.SetCacheability 方法指定頁的 HttpCacheability 值,您可以以編程方式設定頁輸出的可緩衝性。通過 HttpResponse.Cache 屬性可以訪問該方法,而使用頁的程式碼後置類別或代碼聲明塊中的 Response.Cache 文法可以訪問該屬性。

注意   如果使用 @ OutputCache 指令設定頁的可緩衝性,則您必須連同 Location 屬性一起聲明 DurationVaryByParam 屬性。必須將 Duration 屬性設定為大於零的值。如果您不想使用 VaryByParam 屬性所提供的功能,則可以將其屬性設定為 none。有關更多資訊,請參見設定頁緩衝的到期時間和快取頁面的多個版本。

相比之下,如果使用 HttpCachePolicy 類設定可緩衝性,如果已建立了驗證策略,則您不需要設定到期時間。

以聲明方式設定頁的可緩衝性

  1. @ OutputCache 指令包括在 .aspx 檔案中並定義必需的 DurationVaryByParam 屬性。
  2. Location 屬性包括在 @ OutputCache 指令中並將其值定義為受支援的值之一。這些值包括 AnyClientDownstreamServerNone

    注意   預設值為 Any。如果未定義 Location 屬性,則可以將頁輸出緩衝在與響應有關的所有具有緩衝功能的網路應用程式上。其中包括請求用戶端、原伺服器、以及響應通過的任何Proxy 伺服器。

以編程方式設定頁的可緩衝性

  • 在頁的代碼聲明塊或程式碼後置類別檔案中,使用 Response.Cache 文法來訪問 HttpCachePolicy.SetCacheability 方法。下面的代碼將 Cache-Control HTTP 標題設定為 Public
    [C#]    Response.Cache.SetCacheability(HttpCacheability.Public);[Visual Basic]    Response.Cache.SetCacheability(HttpCacheability.Public)

    注意   如果將可緩衝性設定為 HttpCacheability.NoCacheHttpCacheability.ServerAndNoCache,則請求的用戶端不會將頁緩衝在其“記錄”檔案夾中。例如,使用者無論何時單擊向後或向前按鈕,都請求響應的新版本。通過將 HttpCachePolicy.SetAllowResponseInBrowserHistory 方法設定為 true,可以重寫此行為。

    [C#]    Response.Cache.SetAllowResponseInBrowserHistory(true);[Visual Basic]    Response.Cache.SetAllowResponseInBrowserHistory(true)

    如果將可緩衝性設定為 NoCacheServerAndNoCache 以外的其他任何值,則 ASP.NET 將忽略 SetAllowResponseInBrowserHistory 方法所設定的值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.