ASP.NET2.0提供了一些新的用於提升程序性能的技術特性,其中,緩存技術是非常重要的一個特性,它提供了一種非常好的本地數據緩存機制,從而有效的提高數據訪問的性能。
數據緩存(DataCaching)就是將數據暫存於內存緩存區中(有時也暫存於硬盤緩存區中)的一種技術.當數據本身改變得不怎麼頻繁,而被訪問的頻率又比較高時,采用這種技術將大大提高警惕數據訪問的效率.
1.網頁輸出緩存 (1)加顯緩存
<%@OutputCacheDuration="60"VaryByParam=none%>
語句<%@%>是網頁配置的指令,在這裡用來給網頁指定緩存參數.其中:Duration="60"代表緩存持續時間為60秒,VaryByParam屬性用來指定特定版本的網頁輸出,因哪個參數而改變.在<%@OutputCache%>配置指令中一定要加入VaryByParam屬性.即使不使用這個版本屬性,也要將它加入,但將其值設為none.
(2)回調緩存
<%@OutputCacheDuration=60VaryByParam=stata%>
根據lll.aspx?stata=的內容分別緩存
下面的方法可以根據內容刷新
復制代碼 代碼如下:
<scriptrunat="server">
SharedFunctionGetCurrentDate(ByValcontextAsHttpContext)AsString
ReturnNow.ToString()
EndFunction
</script>
<asp:SubstitutionID="Substitution1"runat="server"MethodName="GetCurrentDate"/>
2.數據庫緩存 在ASP.NET2.0中可以通過數據源設置數據表的緩存參數.在SqlDataSource控件的屬性中有幾項用於設置緩存的參數.
CacheDuration:代表緩存的持續時間.默認為Infinite(無限)
CacheExpirationPolicy:緩存的策略.包括兩種設置:Absolute和Sliding.當設置成前者時,時限一到緩存區失效;當設置為後者時,時限到立即刷新緩存區中的數據,並繼續緩存更新後的數據.
CacheKeyDependency:可以用於SQLServer2005數據庫.
EnableCaching:默認時為False,即不使用數據緩存,將該屬性改為True時即可啟動數據緩存.
SqlCacheDependecy:緩存依賴關系.例如設置為pubs:authors表示數據庫Pubs中的authors數據表與它的數據緩存之間建立依賴關系.
有時數據表太大,緩存區可能會占用太大的內存空間.可以將數據緩存到硬盤的緩存區中,為了實現這一點,需要做一些專門的設置.設置包括兩方面.
一:在網頁中配置<%@OutputCacheDuration="3600"VaryByParam="none"DiskCacheable="true"%>
二:在Web.config文件中指定硬盤緩區區的大小,配置的語句如下:
復制代碼 代碼如下:
<system.web>
<caching>
<outputCache>
<diskCacheEnabled="true"maxSizePerApp="2"/>
</outputCache>
</caching>
</system.web>
其中diskCacheEnabled="true"用來啟動硬盤緩存功能;maxSizePerApp="2"用來確定緩存區的容量,這裡確定的緩存區最大容量為2M.同於對硬盤的存取速度比較慢,因此硬盤緩存只適用於緩存持續時間較長的情況(本例中緩存時間為1小時).
3.緩存池 數據緩存技術大大提高警惕了數據訪問的速度,但卻可能引發數據不一致的問題.因此以上緩存技術只適用於數據量大,變化頻率不高的數據.現在ASP.NET2.0新版本結合數據庫SQLServer2005,對數據緩存功能又做了很大的改進,既簡化了使用過程,又完善了處理措施,其中最突出的一點就是與數據庫相結合自動解決了數據失效問題.
在ASP.NET2.0中為了解決數據失效問題,通過新類SQLCacheDependency建立起與新一代數據庫的"SQL緩存依賴關系(SQLExpressdependencycaching)",這種關系可以使得數據庫能夠自動監視數據表的狀況,一旦數據表發生了變化,立即啟動數據庫本身的觸發器將相應的緩存區中的數據變為無效.
此方法也可用於SQL7/2000數據庫,但是使用關必須先配置所監視的數據庫.配置方法比較麻煩,但配置後使用起來還是很簡單的.對於更早期版本的SQLServer或者其他類型的數據庫(例如Oracle),則不能利用這一功能.
配置數據庫連接池
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe
運行asp.netsqlServer配置向導
Aspnet_regsql.exe–S“\DBNAME”–E–d“pubs”–ed
-Ewindows授權
–ed為enabled
Aspnet_regsql.exe–S“\DBNAME”–E–D“pubs”–et–t“authors”
當pubs.authors改變時改變緩存
<%@OutputCacheDuration="9999999"VaryByParam="none"SqlDependency="pubs.authors"%>
緩存配置 復制代碼 代碼如下:
<caching>
<outputCache>
<diskCacheenabled="true"maxSizePerApp="2"/>
</outputCache>
<outputCacheSettings>
<outputCacheProfiles>
<addname="CacheFor60Seconds"duration="60"/>
</outputCacheProfiles>
</outputCacheSettings>
<!--
<sqlCacheDependencyenabled="true"pollTime="1000">
<databases>
<addname="PubsDB"connectionStringName="pubsConnectionString"/>
</databases>
</sqlCacheDependency>
-->
</caching>