頁面級緩存@ OutputCache

?????? 最近要用到緩存,所以才去找了相關資料,開始在一個用戶控件頭加入@ OutputCache指令,發現第一次進入頁面是對了,第二次再進入時就出錯了。郁悶……
這里@ OutputCache的一些參數說明:

?????? 以聲明的方式控制 ASP.NET 頁或頁中包含的用戶控件的輸出緩存策略。有關輸出緩存的更多信息,請參見 ASP.NET 緩存功能。

<%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None" Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" %>

一、屬性

Duration
頁或用戶控件進行緩存的時間(以秒計)。在頁或用戶控件上設置該屬性為來自對象的 HTTP 響應建立了一個過期策略,并將自動緩存頁或用戶控件輸出。
注意?? 該屬性是必需的。如果未包含該屬性,將出現分析器錯誤。

Location
OutputCacheLocation 枚舉值之一。默認值為 Any。
警告?? 包含在用戶控件(.ascx 文件)中的 @ OutputCache 指令不支持此屬性。

Shared
一個布爾值,確定用戶控件輸出是否可以由多個頁共享。默認值為 false。有關詳細信息,請參見備注部分。
注意?? 包含在 ASP.NET 頁(.aspx 文件)中的 @ 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。如果要使輸出緩存根據所有參數值發生變化,請將屬性設置為 *。

VaryByControl
一個分號分隔的字符串列表,用于更改用戶控件的輸出緩存。這些字符串代表在用戶控件中聲明的 ASP.NET 服務器控件的 ID 屬性值。有關詳細信息,請參見緩存 ASP.NET 頁的某些部分。
注意?? 除非已經包含了 VaryByParam 屬性,否則在用戶控件 @ OutputCache 指令中,該屬性是必需的。ASP.NET 頁中的 @ OutputCache 指令不支持該屬性。

二、備注
為頁輸出緩存設置值與通過 HttpResponse.Cache 屬性操作 HttpCachePolicy.SetExpires 和 HttpCachePolicy.SetCacheability 方法相同。如果在創建用戶控件時設置 VaryByParam 屬性,可實現該控件的部分頁緩存。

如果 Web 窗體頁要求用戶查看授權,則輸出緩存將 Cache-Control HTTP 標頭設置為 private。有關所有這些主題的詳細信息,請參見緩存 ASP.NET 頁。

如果將 Shared 屬性設置為 true,則緩存的用戶控件輸出可以被多個 Web 窗體頁訪問。如果不設置為 true,默認行為是為包含用戶控件的每一頁緩存用戶控件輸出的一個版本。通過啟用 Shared 屬性,可以潛在地節省大量的內存。有關詳細信息,請參見緩存 ASP.NET 頁的某些部分。

三、示例
下面的示例說明了如何設置頁或用戶控件進行輸出緩存的持續時間。

<%@ OutputCache Duration="100" VaryByParam="none" %>
下一個示例說明了如何指示輸出緩存來對頁或用戶控件進行緩存,此緩存處理是根據來自窗體的 POST 或來自查詢字符串的位置和計數窗體參數進行的。每個收到的具有不同位置或計數參數(或兩者)的 HTTP 請求都進行 10 秒的緩存處理。帶有相同參數值的任何后繼請求都將從緩存中得到滿足,直至超過輸入的緩存期。

<%@ OutputCache Duration="100" VaryByParam="location;count" %>

轉載于:https://www.cnblogs.com/baoposhou/archive/2006/04/20/380636.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251559.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251559.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251559.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

$.ajax的一些坑啊

1.如果發送ajax返回的數據為json務必設置其 Content-Type:application/json;charsetUTF-8不然會導致其success:function(data)中的data返回的為字符串&#xff0c;導致后面的文本解析失敗 轉載于:https://www.cnblogs.com/lonecloud/p/7794670.html

JavaScript --- 解析Cookie

var parseCookie function(cookie){var cookies {};if(!cookie){return cookies;}var list cookie.split(;);for (var i0;i<list.length;i){var pair list[i].split();cookies[pair[0].trim()] pair[1];}return cookies; };

DDR3和eMMC區別

DDR3內存條和eMMC存儲器區別&#xff1a; 1. 存儲性質不同&#xff1b;2. 存儲容量不同&#xff1b;3. 運行速度不同&#xff1b;4. 用途不同。 具體區別如下&#xff1a; 1、存儲性質不同&#xff1a;eMMC是非易失性存儲器&#xff0c;不論在通電或斷電狀態下&#xff0c;數據…

Sql Server臨時表中插入標示列

select ROW_NUMBER() over( order by sort_id asc) as rows,* into #tmp_tb from tb_district 其中sort_id為您原表的排序列。 tb_district為要操作的表。 轉載于:https://www.cnblogs.com/daretodream/archive/2013/04/03/2997800.html

17秋 軟件工程 團隊第五次作業 Alpha Scrum3

17秋 軟件工程 團隊第五次作業 Alpha Scrum3 今日完成的任務 杰麟&#xff1a;java后端學習&#xff1b;世強&#xff1a;Android的部門基礎信息模塊的信息顯示和對接后臺&#xff1b;港晨&#xff1a;后臺管理登陸界面ui設計&#xff1b;樹民&#xff1a;超級管理員Web后端數據…

Node --- Basic認證

Basic認證: 當客戶端與服務器端進行請求時,允許通過用戶名和密碼實現的一種身份認證方式. // 如果一個頁面需要Basic認證,它會檢查請求報文頭中的Authorization字段的內容,該字段的值由認證方式和加密值構成: $ curl -v "http://user:passwww.baidu.com/" > GET …

用列表+for循環生成乘法口訣表

1 # 結合一下列表生成&#xff0c; 準備設計乘法表2 # numlist [1,2,3,4,5]3 # [pow(i,3) for i in numlist]4 # ## [1, 8, 27, 64, 125]5 # [[pow(i,2), pow(i,3), pow(i,4) ] for i in numlist]6 # ## [[1, 1, 1], [4, 8, 16], [9, 27, 81], [16, 64, 256], [25, 125, 625]]…

event.target【轉載】

[轉載] 1.this和event.target的區別&#xff1a; js中事件是會冒泡的&#xff0c;所以this是可以變化的&#xff0c;但event.target不會變化&#xff0c;它永遠是直接接受事件的目標DOM元素&#xff1b; 2.this和event.target都是dom對象&#xff0c;如果要使用jquey中的方法可…

node --- http數據上傳

// 通過報頭的Transfer-Encoding或Content-Length即可判斷請求中是否帶有內容 var hasBody function(req) {return transfer-encoding in req.headers || content-length in req.headers; };// 在HTTP_Parser解析報頭結束后,報文內容部分會通過data事件觸發 function (req, re…

MVC是架構模式,而不是設計模式

最早學編程的時候看過一些書&#xff0c;印象深刻的一本書《設計模式解析》&#xff0c;那本書給我后來的工作提供了很大的幫助。 他叫我站在問題模型的立場上指定解決方法&#xff0c;也教會了我軟件設計中每個問題都可以細化到到不可再分割的原子性。 在那書以后看到過一些設…

msp430入門編程42

msp430中C語言的軟件工程--事件觸發程序結構 轉載于:https://www.cnblogs.com/guochaoxxl/p/7812773.html

使用DataTable作為存儲過程的參數

最近工作中寫了幾個存儲過程&#xff0c;需要向存 儲過程中傳遞字符串&#xff0c;因為SQL Server 2000中沒有內置類似于 split 的函數&#xff0c;只好自己處理&#xff0c;將前臺數據集中的一列用逗號拆分存到一個List中&#xff0c;再轉化為字符串傳給存儲過程&#xff0c;很…

CodeForces - 976F Minimal k-covering

Description 給你一張左邊 \(n_1\) 個點&#xff0c;右邊 \(n_2\) 個點&#xff0c; \(m\) 條邊的二分圖。對于每一個 \(0\le k\le minDeg\) &#xff0c;求選取哪些邊可以使每個點的度數都不小于 \(k\) 。 \(1\le n_1,n_2\le 2000\) &#xff0c; \(m\le 2000\) Solution 大力…

進制轉換詳細解說

進制的由來&#xff1a;任何數據在計算機中都是以二進制的形式存在的。二進制早起由電信號開關演變而來。 一個整數在內存中一樣也是二進制的&#xff0c;但是使用一大串的1或者0組成的數值進行使用很麻煩 所以就想把一大串縮短點&#xff0c;講二進制中的三位用一位表示。 這三…

刪除Windows 7自動創建的隱藏分區

如果你安裝了Windows 7測試版&#xff0c;在安裝完成后發現Windows 7自動劃出一個隱藏的分區&#xff0c;大小為200MB的。又不懂該怎樣刪除&#xff1f; 其實這個隱藏分區的刪除比較麻煩的&#xff0c;如果貿然使用DM等分區工具來刪除&#xff0c;會損壞硬盤的分區表。即使是使…

jQuery --- 簡單操作合集

// 獲取所有<p>元素 $("p");// 獲取一個ID為myDiv的<div>元素 $("div#myDiv");// 獲取所有type屬性等于"text"的<input>元素 $("input[typetext]");// 獲取所有p元素并隱藏它們 $("p").hide();// 獲取ID為…

6.2 常見多媒體標準及壓縮技術

MPEG-1是視頻的壓縮標準.這個標準是在1993年8月份發布的.標準就規定了視頻文件以每秒鐘1.5MB的速率來傳輸數字媒體它的運動圖像以及伴音的編碼.這個標準它包括了五個部分. MPEG-2它是1994年推出來的一個壓縮標準&#xff0c;也是用于視頻的。MPEG-2、MPEG-4、MPEG-7、MPEG-21它…

Single Number II

2018-06-17 14:04:27 問題描述&#xff1a; 問題求解&#xff1a; 方法一、如果對空間復雜度沒有要求&#xff0c;那么直接使用HashMap對每個數字出現次數進行計數&#xff0c;最后對HashMap遍歷一遍即可&#xff0c;總的時間復雜度為O(n)&#xff0c;空間開銷較大。 方法二、對…

JavaScript --- 自定義優先級隊列

根據HTTP1.1的規范,一個客戶端在同一時刻與同一域名不能有兩個以上的連接。為了完全符合HTTP1.1,一個典型的解決方案就是使用優先級隊列.下面是自定義的優先級隊列 /** * 用原型模式定義PriorityQueue的方法, * 如果沒有定義_compare()方法,那么第一個方法就是默認的_compare(…

可添加至收藏夾并在瀏覽器地址欄運行的JS代碼

編輯當前網頁 代碼如下&#xff1a; javascript:document.body.contentEditabletrue; document.designModeon; void 0 無敵圖片風火輪 在地址欄運行下面的代碼可提取所有圖片元素在頁面上滾動顯示&#xff0c;屬于網頁顯示特效。 代碼如下&#xff1a; javascript:R0; x1.1; y1…