【張逸】ASP.NET:效能與快取[續]
它主要有兩個引數:Duration和VaryByParam
Duration:設定頁面或控制元件進行快取的時間(單位:秒)。例如我要設定快取為60秒內有效,我就可以這樣設定:
設定Cache有什麼好處呢?舉個簡單的例子,你想通過網頁查詢某些資料,而這些資料並非實時變化,或者變化的時間是有期限的,例如查詢氣溫。我們沒有必要了解每秒每刻的氣溫,只需要知道當天的氣溫就OK了。那麼我在午時一點鐘和在一點過一分鐘的時候去查詢的氣溫應該完全一致。如果不設定快取,哪怕你查詢的資料完全一致,ASP.NET也會根據你的需要重複查詢兩次,這就增加了不必要的開銷。
如果設定了快取,只要沒有過Duration所設定的期限,那麼ASP.NET就直接在快取裡查詢即可。
通過ACT(Application Center Test)的測試,發現設定快取後執行的效能比未設定快取時的效能足足提高了三倍多。
可能大家已經看到了在上面的程式碼中,我們將”VaryByParam“設定為none,這個引數又有什麼用了。還是舉剛才那個例子。我們通過城市名來查詢當地的氣溫。例如輸入“beijing”,獲得的氣溫是27。獲得的值會放入到快取中。然而我們在60秒內,接著輸入“shanghai”,因為設定快取的原因,獲取的並非shanghai的氣溫,而是之前放入到快取中的beijing的氣溫27。
解決的辦法就是使用VaryByParam。通過它可以根據設定的引數值建立不同的快取。如果我們輸入的城市名是在一個TextBox中,且該控制元件的ID為”txtCity”,那麼我們可以將其設定到VaryByParam中:
此時,當我們輸入“beijing”時,儲存到快取的是beijing的值。如果再60秒內輸入其它城市,例如“shanghai”,它會在快取中查詢是否有引數值為“shanghai”的快取值,如果沒有去重新獲得,否則讀出相應的值。這樣就可以避免上面所說的錯誤結果。
上面所述的緩衝實際上是頁面緩衝,也就是說,這個緩衝是針對整個頁面而言的。在ASP.NET中還有一種稱為“片斷緩衝”。緩衝的作用域是在UserControl中。
在ASP.NET中,提供了UserControl這種使用者控制元件的功能。一個頁面可以通過多個UserControl來組成。如果只需要在某個或某幾個UserControl裡設定快取。那麼可以在UserControl的Html程式碼中新增語句:
當然在UserControl中也仍然存在快取值重複的問題。這個時候可以使用VaryByControl引數來進行設定。這個設定相當於將快取按照UserControl進行分割槽。方法與設定VaryByParam相似。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-343462/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【張逸】ASP.NET:效能與快取ASP.NET快取
- 【張逸】ASP.Net中控制元件的EnableViewState屬性ASP.NET控制元件View
- Redis 入門與 ASP.NET Core 快取RedisASP.NET快取
- 張逸:程式碼的體格
- Asp.Net MVC 快取ASP.NETMVC快取
- ASP.NET 2.0快取ASP.NET快取
- HTTP前端效能優化(壓縮與快取)HTTP前端優化快取
- ASP.Net快取總結ASP.NET快取
- ServiceWorker 快取與 HTTP 快取快取HTTP
- 5、快逸網站大改版網站
- ASP.NET Core - 快取之分散式快取ASP.NET快取分散式
- ASP.NET Core 中的快取ASP.NET快取
- ASP.NET快取的方法分析ASP.NET快取
- ASP.NET清除頁面快取ASP.NET快取
- Web 快取機制 與 快取策略Web快取
- http快取與cdn快取配置指南HTTP快取
- ASP.NET Core - 快取之記憶體快取(上)ASP.NET快取記憶體
- ASP.NET Core - 快取之記憶體快取(下)ASP.NET快取記憶體
- ASP.NET的快取依賴機制-SQL快取依賴篇ASP.NET快取SQL
- 張逸:程式碼最大的敵人就是體格
- asp.net輸出快取的使用ASP.NET快取
- ASP.NET使用Redis共享快取示例ASP.NETRedis快取
- ASP.NET Core與Redis搭建一個簡易分散式快取ASP.NETRedis分散式快取
- 快取專題:HTML5離線快取與HTTP快取快取HTMLHTTP
- Django效能之道:快取應用與最佳化實戰Django快取
- 瀏覽器的快取機制—強快取與協商快取瀏覽器快取
- 瀏覽器強快取與協商快取瀏覽器快取
- Glide - 記憶體快取與磁碟快取IDE記憶體快取
- 張逸: ThoughtWorks(中國)程式設計師讀書雷達程式設計師
- ASP.NET快取:方法和最佳實踐ASP.NET快取
- 快取與緩衝快取
- 304與快取快取
- 快取Apache Spark RDD - 效能調優快取ApacheSpark
- 什麼是redis的快取雪崩與快取穿透Redis快取穿透
- VMware 與 SmartX 分散式儲存快取機制淺析與效能對比分散式快取
- 瀏覽器快取淺談(強快取與協商快取的認知)瀏覽器快取
- C# ASP.NET系統快取全解析C#ASP.NET快取
- ASP.NET快取:方法和最佳實踐 (轉)ASP.NET快取