ASP.NET2.0緩衝(Cache)技術深入理解

來源:互聯網
上載者:User

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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.