1. 程式人生 > >ASP.NET 中 OutputCache 指令引數詳解

ASP.NET 中 OutputCache 指令引數詳解

使用@ OutputCache指令
使用@ OutputCache指令,能夠實現對頁面輸出快取的一般性需要。@ OutputCache指令在ASP.NET頁或者頁中包含的使用者控制元件的頭部宣告。這種方式非常方便,只需幾個簡單的屬性設定,就能夠實現頁面的輸出快取 策略。@ OutputCache指令宣告程式碼如下。
@ 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" %>
如上所示,在@ OutputCache指令中,共包括10個屬性,它們是CacheProfile、NoStore、Duration、Shared、 Location、SqlDependency、VaryByControl、VaryByCustom、VaryByHeader和 VaryByParam。這些屬性將對快取時間、快取項的位置、SQL資料快取依賴等各方面進行設定。下面簡要介紹以上屬性的基本概念。
CacheProfile
用於定義與該頁關聯的快取設定的名稱。是可選屬性,預設值為空字元("")。需要注意的是,包含在使用者控制元件中的@ OutputCache指令不支援此屬性。在頁面中指定此屬性時,屬性值必須與Web.config檔案<outputCacheSettings>配置 節下的outputCacheProfiles元素中的一個可用項的名稱匹配。如果此名稱與配置檔案項不匹配,將引發異常。
NoStore
該屬性定義一個布林值,用於決定是否阻止敏感資訊的二級儲存。需要注意的是,包含在使用者控制元件中的@ OutputCache指令不支援此屬性。將此屬性設定為true等效於在請求期間執行程式碼“Response.Cache.SetNoStore();”。
Duration
用於設定頁面或者使用者控制元件快取的時間。單位是秒。通過設定該屬性,能夠為來自物件的HTTP響應建立了一個過期策略,並將自動快取頁或使用者控制元件輸出。需要注意的是,Duration屬性是必需的,否則將會引起分析器錯誤。
Shared
該屬性定義一個布林值,用於確定使用者控制元件輸出是否可以由多個頁共享。預設值為false。注意,包含在ASP.NET頁中的@ OutputCache指令不支援此屬性。
Location
用於指定輸出快取項的位置。其屬性值是OutputCacheLocation列舉值,它們是Any、Client、Downstream、None、 Server和ServerAndClient。預設值是Any,表示輸出快取可用於所有請求,包括客戶端瀏覽器、代理伺服器或處理請求的伺服器上。需要注意的是,包含在使用者控制元件中的@ OutputCache指令不支援此屬性。
SqlDependency
該屬性標識一組資料庫/表名稱對的字串值,頁或控制元件的輸出快取依賴於這些名稱對。需要注意:SqlCacheDependency類監視輸出快取所依賴 的資料庫中的表,因此,當更新表中的項時,使用基於表的輪詢將從快取中移除這些項。當通知(在SQL Server 2005中)與CommandNotification值一起使用時,最終將使用SqlDependency類向SQL Server 2005伺服器註冊查詢通知。另外,SqlDependency屬性的CommandNotification值僅在ASP.NET頁中有效。控制元件只能將 基於表的輪詢用於@ OutputCache指令。
VaryByControl
該屬性使用一個分號分隔的字串列表來更改使用者控制元件的輸出快取。這些字串代表在使用者控制元件中宣告的ASP.NET伺服器控制元件的ID屬性值。除非已經包含了VaryByParam屬性,否則在@ OutputCache指令中,該屬性是必需的。
VaryByCustom
用於自定義輸出快取要求的任意文字。如果賦予該屬性值是browser,快取將隨瀏覽器名稱和主要版本資訊的不同而異。如果輸入了自定義字串,則必須在 應用程式的Global.asax檔案中重寫HttpApplication.GetVaryByCustomString方法。
VaryByHeader
該屬性中包含由分號分隔的HTTP標頭列表,用於使輸出快取發生變化。當將該屬性設為多標頭時,對於每個指定的標頭,輸出快取都包含一個請求文件的不同版 本。VaryByHeader屬性在所有HTTP 1.1快取中啟用快取項,而不僅限於ASP.NET快取。使用者控制元件中的@ OutputCache指令不支援此屬性。
VaryByParam
該屬性定義了一個分號分隔的字串列表,用於使輸出快取發生變化。預設情況下,這些字串與用GET方法屬性發送的查詢字串值對應,或與用POST方法 傳送的引數對應。當將該屬性設定為多引數時,對於每個指定的引數,輸出快取都包含一個請求文件的不同版本。可能的值包括“none”、“*”和任何有效的 查詢字串或POST引數名稱。值得注意的是,在輸出快取ASP.NET頁時,該屬性是必需的。它對於使用者控制元件也是必需的,除非已經在使用者控制元件的@ OutputCache指令中包含了VaryByControl屬性。如果沒有包含,則會發生分析器錯誤。如果不需要使快取內容隨任何指定引數發生變化, 則可將該值設為“none”。如果要使輸出快取根據所有引數值發生變化,則將屬性設定為“*”。

相關推薦

ASP.NET OutputCache 指令引數

使用@ OutputCache指令使用@ OutputCache指令,能夠實現對頁面輸出快取的一般性需要。@ OutputCache指令在ASP.NET頁或者頁中包含的使用者控制元件的頭部宣告。這種方式非常方便,只需幾個簡單的屬性設定,就能夠實現頁面的輸出快取 策略。@ OutputCache指令宣告程式碼如

Asp.NetMVC緩存

攔截 針對 http1 信息 我們 更新 ring file tin 本文通過介紹了Asp.Net中MVC緩存的種類,以及他們之間的區別等內容,讓學習者能夠深入的了解MVC緩存的原理機制,以下是具體內容: 緩存是一種保存資源副本並在下次請求時直接使用該副本的技術。當 web

Asp.Netajax+aspx使用

function GetString(type, contentType, data, dataType) { //var realData = "{ \"action\": \"getString\", \"num\": \"1

學習筆記--JDK的URLConnection引數

JDK中的URLConnection引數詳解 針對JDK中的URLConnection連線Servlet的問題,網上有雖然有所涉及,但是隻是說明了某一個或幾個問題,是以FAQ的方式來解決的,而且比較零散,現在對這個類的使用就本人在專案中的使用經驗做如下總結:  1:>

資料庫mysqldump指令引數

資料庫mysqldump命令引數詳解 --all-databases , -A 匯出全部資料庫。 mysqldump -uroot -p --all-databases --all-tablespaces , -Y 匯出全部表空間。 mysqldump -uroot -p --all-databa

linuxmount命令引數 nfs 引數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ajaxerror函式引數

xhr.status和error函式中的status是不一樣的,error函式中的status主要包括:"success"、"notmodified"、"error"、"timeout"、"parsererror",而xhr.status如下所講。   一

MySQL的mysqldump指令引數

MySQL的mysqldump指令可以進行邏輯備份,其使用格式為mysqlpump [options] > dump.sql。下述為其簡單應用格式: 1.將資料庫中某個資料庫備份 $ mysqldump -uroot -pPassword [db_name] > [file_

asp.net webapi讀取引數物件和.net core的區別

asp.net 中讀取webapi中的post物件引數時候需要使用[FromBody],讀取get的引數要用到[FromUri]。 例如 [System.Web.Http.HttpGet] public object GetPage([FromUri]ProductSearchInput inp

Asp.net】—web.config配置

前言    小編最近這一段時間在學習Asp.net視訊,在視訊中,當每一次通過.NET新建一個Web應用程式後,預設情況下會在根目錄自動建立一個預設的Web.config檔案。那麼這個Web.conf

Linuxtop命令引數

本篇博文主要講解有關top命令,top命令的主要功能是檢視程序活動狀態以及一些系統狀況。 TOP是一個動態顯示過程,即可以通過使用者按鍵來不斷重新整理當前狀態.如果在前臺執行該命令,它將獨佔前臺,直到使用者終止該程式為止.比較準確的說,top命令提供了實時的對

Pythonscatter函式引數

想了解更多請關注微信公眾號:Python技術博文 最近開始學習Python程式設計,遇到scatter函式,感覺裡面的引數不知道什麼意思於是查資料,最後總結如下: 1、scatter函式原型 2、其中散點的形狀引數marker如下: 3、其中顏色引數c如下: 4、

linuxmount命令引數(nfs 引數)

1,命令格式mount命令的格式如下:mount [-t vfstype] [-o  options] device dirmount命令引數非常多,如下為與NFS相關的引數。(1)-a:把/etc/

Python的預設引數

文章的主題 不要使用可變物件作為函式的預設引數例如 list,dict,因為def是一個可執行語句,只有def執行的時候才會計算預設預設引數的值,所以使用預設引數會造成函式執行的時候一直在使用同一個物件,引起bug。 基本原理 在 Python 原始碼中,我們使用de

JQuery$.ajax()方法引數

轉載來自:http://blog.sina.com.cn/s/blog_4f925fc30100la36.html url: 要求為String型別的引數,(預設為當前頁地址)傳送請求的地址。type: 要求為String型別的引數,請求方式(post或get)預設為ge

WebpackSplitChunksPlugin 配置引數

程式碼分割本身和 webpack 沒有什麼關係,但是由於使用 webpack 可以非常輕鬆地實現程式碼分割,所以提到程式碼分割首先就會想到使用 webopack 實現。 在 webpack 中是使用 SplitChunksPlugin來實現的,由於 SplitChunksPlugin 配置引數眾多,接下來就來

VS2010 Chart控件(一)Chart控件在ASP.NET網站的應用示例(C#語言)

[1] 設置 cti write conf int 應用程序 itl config 步驟如下: 1、 Chart控件(一)Chart控件在ASP.NET網站中的應用示例詳解(C#語言)" title="VS2010 Chart控件(一)Chart控件在ASP.NET網站中的

Asp.Net MVC WebAPI的建立與前臺Jquery ajax後臺HttpClient呼叫 Asp.Net對操作Sql Server 簡單處理的SqlDB類

1、什麼是WebApi,它有什麼用途?           Web API是一個比較寬泛的概念。這裡我們提到Web API特指ASP.NET MVC Web API。在新出的MVC中,增加了WebAPI,用於提供REST風格的WebService,新生成的W

Asp.netGridView使用(引)

GridView無程式碼分頁排序 GridView選中,編輯,取消,刪除 GridView正反雙向排序 GridView和下拉選單DropDownList結合 GridView和CheckBox結合 滑鼠移到GridView某一行時改變該行的背景色方法一 滑鼠移到GridView某一行時改變該

asp.net a標籤href=“#”屬性和 onclick()事件

這幾天做網站專案中遇到一個問題,就是在巢狀網站的時候發現不管onclick()跳轉到任何頁面,都會重新整理當前頁面,後來我才發現,是a標籤搞的鬼, 1:a標籤中href=“#”是指跳轉到當前頁面,所以重新整理的就是你的當前頁面,而同時存在onclick,href的時候會首先