ASP.NET2.0緩存(Cache)技術深入理解
更新時間:2012年11月30日 11:45:45 作者:
緩存技術是ASP.NET2.0非常重要的一個特性,它提供了一種非常好的本地數(shù)據(jù)緩存機制,從而有效的提高數(shù)據(jù)訪問的性能
ASP.NET2.0提供了一些新的用于提升程序性能的技術特性,其中,緩存技術是非常重要的一個特性,它提供了一種非常好的本地數(shù)據(jù)緩存機制,從而有效的提高數(shù)據(jù)訪問的性能。
數(shù)據(jù)緩存(DataCaching)就是將數(shù)據(jù)暫存于內(nèi)存緩存區(qū)中(有時也暫存于硬盤緩存區(qū)中)的一種技術.當數(shù)據(jù)本身改變得不怎么頻繁,而被訪問的頻率又比較高時,采用這種技術將大大提高警惕數(shù)據(jù)訪問的效率.
1.網(wǎng)頁輸出緩存
(1)加顯緩存
<%@OutputCacheDuration="60"VaryByParam=none%>
語句<%@%>是網(wǎng)頁配置的指令,在這里用來給網(wǎng)頁指定緩存參數(shù).其中:Duration="60"代表緩存持續(xù)時間為60秒,VaryByParam屬性用來指定特定版本的網(wǎng)頁輸出,因哪個參數(shù)而改變.在<%@OutputCache%>配置指令中一定要加入VaryByParam屬性.即使不使用這個版本屬性,也要將它加入,但將其值設為none.
(2)回調緩存
<%@OutputCacheDuration=60VaryByParam=stata%>
根據(jù)lll.aspx?stata=的內(nèi)容分別緩存
下面的方法可以根據(jù)內(nèi)容刷新
<scriptrunat="server">
SharedFunctionGetCurrentDate(ByValcontextAsHttpContext)AsString
ReturnNow.ToString()
EndFunction
</script>
<asp:SubstitutionID="Substitution1"runat="server"MethodName="GetCurrentDate"/>
2.數(shù)據(jù)庫緩存
在ASP.NET2.0中可以通過數(shù)據(jù)源設置數(shù)據(jù)表的緩存參數(shù).在SqlDataSource控件的屬性中有幾項用于設置緩存的參數(shù).
CacheDuration:代表緩存的持續(xù)時間.默認為Infinite(無限)
CacheExpirationPolicy:緩存的策略.包括兩種設置:Absolute和Sliding.當設置成前者時,時限一到緩存區(qū)失效;當設置為后者時,時限到立即刷新緩存區(qū)中的數(shù)據(jù),并繼續(xù)緩存更新后的數(shù)據(jù).
CacheKeyDependency:可以用于SQLServer2005數(shù)據(jù)庫.
EnableCaching:默認時為False,即不使用數(shù)據(jù)緩存,將該屬性改為True時即可啟動數(shù)據(jù)緩存.
SqlCacheDependecy:緩存依賴關系.例如設置為pubs:authors表示數(shù)據(jù)庫Pubs中的authors數(shù)據(jù)表與它的數(shù)據(jù)緩存之間建立依賴關系.
有時數(shù)據(jù)表太大,緩存區(qū)可能會占用太大的內(nèi)存空間.可以將數(shù)據(jù)緩存到硬盤的緩存區(qū)中,為了實現(xiàn)這一點,需要做一些專門的設置.設置包括兩方面.
一:在網(wǎng)頁中配置<%@OutputCacheDuration="3600"VaryByParam="none"DiskCacheable="true"%>
二:在Web.config文件中指定硬盤緩區(qū)區(qū)的大小,配置的語句如下:
<system.web>
<caching>
<outputCache>
<diskCacheEnabled="true"maxSizePerApp="2"/>
</outputCache>
</caching>
</system.web>
其中diskCacheEnabled="true"用來啟動硬盤緩存功能;maxSizePerApp="2"用來確定緩存區(qū)的容量,這里確定的緩存區(qū)最大容量為2M.同于對硬盤的存取速度比較慢,因此硬盤緩存只適用于緩存持續(xù)時間較長的情況(本例中緩存時間為1小時).
3.緩存池
數(shù)據(jù)緩存技術大大提高警惕了數(shù)據(jù)訪問的速度,但卻可能引發(fā)數(shù)據(jù)不一致的問題.因此以上緩存技術只適用于數(shù)據(jù)量大,變化頻率不高的數(shù)據(jù).現(xiàn)在ASP.NET2.0新版本結合數(shù)據(jù)庫SQLServer2005,對數(shù)據(jù)緩存功能又做了很大的改進,既簡化了使用過程,又完善了處理措施,其中最突出的一點就是與數(shù)據(jù)庫相結合自動解決了數(shù)據(jù)失效問題.
在ASP.NET2.0中為了解決數(shù)據(jù)失效問題,通過新類SQLCacheDependency建立起與新一代數(shù)據(jù)庫的"SQL緩存依賴關系(SQLExpressdependencycaching)",這種關系可以使得數(shù)據(jù)庫能夠自動監(jiān)視數(shù)據(jù)表的狀況,一旦數(shù)據(jù)表發(fā)生了變化,立即啟動數(shù)據(jù)庫本身的觸發(fā)器將相應的緩存區(qū)中的數(shù)據(jù)變?yōu)闊o效.
此方法也可用于SQL7/2000數(shù)據(jù)庫,但是使用關必須先配置所監(jiān)視的數(shù)據(jù)庫.配置方法比較麻煩,但配置后使用起來還是很簡單的.對于更早期版本的SQLServer或者其他類型的數(shù)據(jù)庫(例如Oracle),則不能利用這一功能.
配置數(shù)據(jù)庫連接池
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>
數(shù)據(jù)緩存(DataCaching)就是將數(shù)據(jù)暫存于內(nèi)存緩存區(qū)中(有時也暫存于硬盤緩存區(qū)中)的一種技術.當數(shù)據(jù)本身改變得不怎么頻繁,而被訪問的頻率又比較高時,采用這種技術將大大提高警惕數(shù)據(jù)訪問的效率.
1.網(wǎng)頁輸出緩存
(1)加顯緩存
<%@OutputCacheDuration="60"VaryByParam=none%>
語句<%@%>是網(wǎng)頁配置的指令,在這里用來給網(wǎng)頁指定緩存參數(shù).其中:Duration="60"代表緩存持續(xù)時間為60秒,VaryByParam屬性用來指定特定版本的網(wǎng)頁輸出,因哪個參數(shù)而改變.在<%@OutputCache%>配置指令中一定要加入VaryByParam屬性.即使不使用這個版本屬性,也要將它加入,但將其值設為none.
(2)回調緩存
<%@OutputCacheDuration=60VaryByParam=stata%>
根據(jù)lll.aspx?stata=的內(nèi)容分別緩存
下面的方法可以根據(jù)內(nèi)容刷新
復制代碼 代碼如下:
<scriptrunat="server">
SharedFunctionGetCurrentDate(ByValcontextAsHttpContext)AsString
ReturnNow.ToString()
EndFunction
</script>
<asp:SubstitutionID="Substitution1"runat="server"MethodName="GetCurrentDate"/>
2.數(shù)據(jù)庫緩存
在ASP.NET2.0中可以通過數(shù)據(jù)源設置數(shù)據(jù)表的緩存參數(shù).在SqlDataSource控件的屬性中有幾項用于設置緩存的參數(shù).
CacheDuration:代表緩存的持續(xù)時間.默認為Infinite(無限)
CacheExpirationPolicy:緩存的策略.包括兩種設置:Absolute和Sliding.當設置成前者時,時限一到緩存區(qū)失效;當設置為后者時,時限到立即刷新緩存區(qū)中的數(shù)據(jù),并繼續(xù)緩存更新后的數(shù)據(jù).
CacheKeyDependency:可以用于SQLServer2005數(shù)據(jù)庫.
EnableCaching:默認時為False,即不使用數(shù)據(jù)緩存,將該屬性改為True時即可啟動數(shù)據(jù)緩存.
SqlCacheDependecy:緩存依賴關系.例如設置為pubs:authors表示數(shù)據(jù)庫Pubs中的authors數(shù)據(jù)表與它的數(shù)據(jù)緩存之間建立依賴關系.
有時數(shù)據(jù)表太大,緩存區(qū)可能會占用太大的內(nèi)存空間.可以將數(shù)據(jù)緩存到硬盤的緩存區(qū)中,為了實現(xiàn)這一點,需要做一些專門的設置.設置包括兩方面.
一:在網(wǎng)頁中配置<%@OutputCacheDuration="3600"VaryByParam="none"DiskCacheable="true"%>
二:在Web.config文件中指定硬盤緩區(qū)區(qū)的大小,配置的語句如下:
復制代碼 代碼如下:
<system.web>
<caching>
<outputCache>
<diskCacheEnabled="true"maxSizePerApp="2"/>
</outputCache>
</caching>
</system.web>
其中diskCacheEnabled="true"用來啟動硬盤緩存功能;maxSizePerApp="2"用來確定緩存區(qū)的容量,這里確定的緩存區(qū)最大容量為2M.同于對硬盤的存取速度比較慢,因此硬盤緩存只適用于緩存持續(xù)時間較長的情況(本例中緩存時間為1小時).
3.緩存池
數(shù)據(jù)緩存技術大大提高警惕了數(shù)據(jù)訪問的速度,但卻可能引發(fā)數(shù)據(jù)不一致的問題.因此以上緩存技術只適用于數(shù)據(jù)量大,變化頻率不高的數(shù)據(jù).現(xiàn)在ASP.NET2.0新版本結合數(shù)據(jù)庫SQLServer2005,對數(shù)據(jù)緩存功能又做了很大的改進,既簡化了使用過程,又完善了處理措施,其中最突出的一點就是與數(shù)據(jù)庫相結合自動解決了數(shù)據(jù)失效問題.
在ASP.NET2.0中為了解決數(shù)據(jù)失效問題,通過新類SQLCacheDependency建立起與新一代數(shù)據(jù)庫的"SQL緩存依賴關系(SQLExpressdependencycaching)",這種關系可以使得數(shù)據(jù)庫能夠自動監(jiān)視數(shù)據(jù)表的狀況,一旦數(shù)據(jù)表發(fā)生了變化,立即啟動數(shù)據(jù)庫本身的觸發(fā)器將相應的緩存區(qū)中的數(shù)據(jù)變?yōu)闊o效.
此方法也可用于SQL7/2000數(shù)據(jù)庫,但是使用關必須先配置所監(jiān)視的數(shù)據(jù)庫.配置方法比較麻煩,但配置后使用起來還是很簡單的.對于更早期版本的SQLServer或者其他類型的數(shù)據(jù)庫(例如Oracle),則不能利用這一功能.
配置數(shù)據(jù)庫連接池
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>
相關文章
.NET 6開發(fā)TodoList應用之實現(xiàn)API版本控制
API接口版本管理,對于一些規(guī)模稍大的企業(yè)應用來說,是經(jīng)常需要關注的一大需求。本文將介紹在.NET 6開發(fā)中如何實現(xiàn)API版本控制,感興趣的可以了解一下2022-01-01
使用最小?WEB?API?實現(xiàn)文件上傳會遇到的坑
這篇文章主要介紹分享使用最小?WEB?API?實現(xiàn)文件上傳時會遇到的坑,在使用?.NET?6?的最小?WEB?API?來實現(xiàn)相同功能時,總是會意外地遇到了不少坑,下面我們就來看看這些坑都是怎么處理的吧,需要的朋友可以參考下2022-02-02
基于ABP架構開發(fā)的.Net Core項目部署到IIS問題匯總
這篇文章介紹了基于ABP架構開發(fā)的.Net Core項目部署到IIS問題匯總,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
C#調用動態(tài)unlha32.dll解壓Lha后綴的打包文件分享
這篇文章介紹了,C#調用動態(tài)unlha32.dll解壓Lha后綴的打包文件,有需要的朋友可以參考一下2013-09-09

