其中Duration與VaryByP"/> 其中Duration與VaryByP">
搜尋
首頁後端開發C#.Net教程淺析asp.net頁面快取技術

很早就想寫多點關於技術的東西
一來是為了自己可以更面向的查詢,而來當然了更方面大家拉。哈
閒話少說
今天剛好有空就拼湊點出來


頁面快取
使用OutputCache指令。 VaryByCustom="browser"
VaryByParam="RequestID" %>
其中Duration和VaryByParam特性是必須的。

##Location


意義

#Any預設值。的輸出可以快取在客戶端瀏覽器,快取在任何「下游」的客戶端(如代理伺服器),或快取在Web伺服器本身Client指明輸出快取只能儲存在發出要求的用戶端(即瀏覽器)的本機快取中Downstream#指明輸出快取能儲存在任何支援HTTP1.1快取的裝置(如代理伺服器)中Server#指明輸出快取將儲存在Web伺服器上None#指明該頁面停用輸出快取 ##


Duration允許我們控制頁面在快取中生存的時間(單位是秒)

VaryByParam允許我們快取頁面的不同版本。在上面的範例中,VaryByParam設定為了RequestID,所以ASP.NET使用RequestID參數的不同值,這些值或是在HTTP GET的查詢字串中傳入,或者是在HTTP POST的參數中傳入。可以透過檢查RequestID參數的值讓應用程式區分不同的使用者;透過在頁面的OutputCache指令中放置VaryByParam="RequestID",可以讓ASP.NET為每個使用者快取頁面的不同版本。
如果不想根據參數的值快取頁面的不問版本,那麼只要把VaryByParam設為none。
也可以要求ASP.NET為每個可能的參考陣列合快取頁面的一個版本。為此,可把VaryByParam設為*。

VaryByHeader和VaryByCustom功能與VaryByParam的相似之處在於,它們允許指定何時應建立頁面新的快取版本。
VaryByHeader允許我們根據由分號分隔的HTTP頭的清單末端快取頁面的不向版本。
VaryByCustom當設為browser時,允許我們根據瀏覽器的名稱和主版本資訊快取不同版本。也可以把它設為一個自訂方法的名稱,從而實現我們自己的邏輯,控制快取的版本。

片段快取
可以利用使用者控制項將頁面分段,在ascx檔案中寫入快取的語句,而不是在aspx檔案中寫快取語句,這樣ASP.NET就可以只緩存ascx片段的輸出了。一般像頁首或頁尾基本上都是一樣的,就不需要重新載入。但是如果其中有動態變化的資料就不能對其進行緩存,因為一旦被緩存後程式就不會再創建它的實例來更新資料顯示,只有等到生存期過期才行,所以對於這種情況就不適於用頁面片段快取。
注意:
一、注意片段快取不支援Location特性;快取頁面片段惟一合法的地方是web伺服器。這是因為片段快取在ASP.NET中是新的功能,所以瀏覽器和代理伺服器不支援。
二、片段快取有另外一個在頁面快取中沒有的功能-VaryByControl。 VaryByControl特性允許指定一個由分號分隔的字串列表,代表使用者控制項內使用的控制項的名稱;ASP.NET將針對值的每個不同的組合產生使用者構件的一個快取版本。

資料快取
低階API是Cache類,它位於ASP.NET中的System.web.Caching命名空間,可以用它快取產生很耗費資源的資料。 Cache類別的使用和Session與Application物件一樣簡單。每個應用程式只有一個Cache物件——這意味著使用Cache物件儲存在快取中的資料是應用程式層級的資料。讓事情更簡單的是,Page類別的Cache屬性使應用程式的Cache物件實例能在程式碼中使用。
透過Cache物件快取的資料儲存在應用程式的記憶體中。這表示該資料的生存期不會超過應用程式的重啟(事實上,這和儲存在Application與Session物件中的資料一樣,除非使用StateService或SQL State會話模式儲存Session資料)。
具體的使用和語法與Session和Application一樣。轉換回來的時候需要注意對其進行對應類型的強制類型轉換

這不是在ASP.NET快取中新增快取項目的惟一方式。 Cache物件有兩個方法Insert()方法和Add()方法,它們靈活性更高。它們的用法近似,但稍有不同:
Insert()方法用於覆寫ASP.NET快取中現有的快取項目。
Add()方法只用於在ASP.NET快取中新增新的快取項目(如果用它覆寫現有的快取項,則會失敗)。
每個方法都有7個參數,而且兩個方法的參數相同。
在快取某一項時,可以指定它的相關性,告訴ASP.NET該快取項目在快取中一直保留到某個事件發生時為止。











DateTime
相關性值
意思
CacheDependency




#允許指定一個檔案或快取鍵。如果檔案發生變化,物件就被刪除。如果快取鍵發生變化,物件也被刪除。

這是DataTime值,指明快取資料過期的時間(絕對過期時間)

TimeSpan這是一個時間間隔,指明快取資料在上一次存取後可以在快取中保留多長時間(彈性過期時間) ,以便在快取被填滿的時候刪除那些優先權低的資料。 ##High設定為此優先權的快取項目是最不可能在記憶體不足時被刪除的#AboveNormal為此優先權的快取項目比優先權為Normal或以下的快取項目更優先保留Normal設為為此優先等級的快取項目比優先權為BelowNormal和Low的快取項目更優先保留#BelowNormal這是倒數第二個的優先層級;設為此優先權的快取項目只比優先權設為Low的快取項目更優先保留Low設為此優先權的快取項目是最有可能在記憶體不足時被刪除的#Default


使用CacheItemPriority來指定快取資料的
優先權

優先權值
意思











快取項目的優先權的預設值是Normal




NotRemovable


當快取項目設定為此優先權時,是在告訴ASP.NET即使是記憶體不足,也不要從快取中刪除它





DateTime dt = new DateTime(DateTime.Now.Year,12,31);
Cache.Add("MembersDataSet" ,dsMembers,null,
dt,TimeSpan.Zero,
CacheItemPriority.Normal,null);
第一個參數是引用快取物件的鍵,第二個參數是要快取的物件。第三個參數是null(表示沒有相關性)。
第四和第五個參數是絕對的過期時間和彈性的過期時間。這裡,我們指定快取應在當前年份的最後一天過期(dt)。我們要指定沒有彈性的過期時間,所以第五個參數使用TimeSpan.Zero。第六個參數使用System.Web.Caching.CacheItemPriority枚舉中的一個值,把優先權設為Normal。

指定一個5分鐘的彈性過期時間,沒有指定絕對過期時間
Cache.Add("MembersDataSet",dsMembers,null,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

新增一個相關性。在這個範例中,過期時間也取決於一個檔案的修改,即test.xml檔:
CacheDependency dep = new CacheDependency(@"C:/test.xml");
Cache.Add("MembersDataSet ",dsMembers,dep,
DateTime.MaxValue,TimeSpan.FromMinutes(5),
CacheItemPriority.Normal,null);

過期時間取決於快取中另一項的修改:
String[] dependencyKeys = new String[1];
dependencyKeys[0] = "MembersChanged";
CacheDependency dependency = new CacheDependency(null, dependencyKeys);

Cache.Add("MembersDataSet" ,dependency,
DateTime.MaxValue,TimeSpan.Zero,
CacheItemPriority.Normal,null);##########

以上是淺析asp.net頁面快取技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
c#和.net:了解兩者之間的關係c#和.net:了解兩者之間的關係Apr 17, 2025 am 12:07 AM

C#和.NET的關係是密不可分的,但它們不是一回事。 C#是一門編程語言,而.NET是一個開發平台。 C#用於編寫代碼,編譯成.NET的中間語言(IL),由.NET運行時(CLR)執行。

c#.net的持續相關性:查看當前用法c#.net的持續相關性:查看當前用法Apr 16, 2025 am 12:07 AM

C#.NET依然重要,因為它提供了強大的工具和庫,支持多種應用開發。 1)C#結合.NET框架,使開發高效便捷。 2)C#的類型安全和垃圾回收機制增強了其優勢。 3).NET提供跨平台運行環境和豐富的API,提升了開發靈活性。

從網絡到桌面:C#.NET的多功能性從網絡到桌面:C#.NET的多功能性Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C#.NET與未來:適應新技術C#.NET與未來:適應新技術Apr 14, 2025 am 12:06 AM

C#和.NET通過不斷的更新和優化,適應了新興技術的需求。 1)C#9.0和.NET5引入了記錄類型和性能優化。 2).NETCore增強了雲原生和容器化支持。 3)ASP.NETCore與現代Web技術集成。 4)ML.NET支持機器學習和人工智能。 5)異步編程和最佳實踐提升了性能。

c#.net適合您嗎?評估其適用性c#.net適合您嗎?評估其適用性Apr 13, 2025 am 12:03 AM

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

.NET中的C#代碼:探索編程過程.NET中的C#代碼:探索編程過程Apr 12, 2025 am 12:02 AM

C#在.NET中的編程過程包括以下步驟:1)編寫C#代碼,2)編譯為中間語言(IL),3)由.NET運行時(CLR)執行。 C#在.NET中的優勢在於其現代化語法、強大的類型系統和與.NET框架的緊密集成,適用於從桌面應用到Web服務的各種開發場景。

C#.NET:探索核心概念和編程基礎知識C#.NET:探索核心概念和編程基礎知識Apr 10, 2025 am 09:32 AM

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

測試C#.NET應用程序:單元,集成和端到端測試測試C#.NET應用程序:單元,集成和端到端測試Apr 09, 2025 am 12:04 AM

C#.NET應用的測試策略包括單元測試、集成測試和端到端測試。 1.單元測試確保代碼的最小單元獨立工作,使用MSTest、NUnit或xUnit框架。 2.集成測試驗證多個單元組合的功能,常用模擬數據和外部服務。 3.端到端測試模擬用戶完整操作流程,通常使用Selenium進行自動化測試。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器