在ASP.NET 2.0,新增加了不少新的功能和控件。其中,在數據的緩存功能,比asp.net 1.1有了很大的改變。眾所周知,數據的緩存功能是十分重要的,我們可以把一些在相對一段時間內不發生改變的數據放在緩存中,這樣,就不必要每次去讀取數據庫,當下次再需要這些數據時,可以直接從緩存中取得,大大增強了效率。
而在asp.net 1.1 中,已經比較好地實現了數據的緩存功能,但有一個小問題,那就是如果數據庫中的數據發生了變化,緩存不能在指定的時間內更新,而必須等到緩存失效。比如,在網頁中,如果你對商品的一些詳細信息,如價格等使用了頁面緩存,那麼假如在後台修改了這些信息,用戶不會馬上看到這些信息,而要延遲一些時間才看到。在某些應用場合,如果你要做到對於數據庫的任何更新,都能馬上可以在緩存的變化生效的話,在asp.net 1.1中則是比較難實現的,而在asp.net 2.0中,則可以很方便地實現該功能。本文將以.net Framework 2.0 beta,visual web developer express beta ,來介紹該功能的實現。
首先,在asp.net 2.0中,針對sql server 7/2000,以及即將發行的sql server 2005(Yukon),分別提供了新的緩存功能。這裡著重介紹針對sql server 7/2000的緩存功能。這個新的數據緩存功能,叫做SqlCacheDependency,要實現該功能,需要采用如下步驟:
1、在.net framework 2.0的安裝目錄下
(默認是WINNT\Microsoft.NET\Framework\v2.0.40607),啟動一個叫aspnet_regsql.exe的命令行工具,比如:
aspnet_regsql -S localhost –U sa –P 123456 -d Pubs –ed
上面的意思是,指定了本地的數據庫服務器localhost,並指定了登陸的用戶名和密碼,並用參數-d指定了要采用哪一個數據庫(這裡是指定了pubs)數據庫,-ed參數表示是允許該數據庫使用sqlcachedependency功能。
接著,我們需要指定對哪一個表使用數據sqlcachedependency功能,如:
aspnet_regsql -S localhost –U sa -P 123456 -ed -d pubs -et -t authors
上面語句的意思是,指定對pubs數據庫中的authors表使用sqlcachedependency功能,-t參數後是表的名稱,-et是允許該表使用sqlcachedependency功能。其他的有關參數簡單介紹如下:
參數 參數意義 -? 顯示該工具的幫助功能. -S 後接的參數為數據庫服務器的名稱或者IP地址 -U 後接的參數為數據庫的登陸用戶名. -P 後接的參數為數據庫的登陸密碼 -E 當使用windows集成驗證時,使用該功能 -t 後接參數為對哪一個表采用sqlcachedependency功能。 -d 後接參數為對哪一個數據庫采用sqlcachedependency功能 -ed 允許對數據庫使用sqlcachedependency功能 -dd 禁止對數據庫采用sqlcachedependency功能 -et 允許對數據表采用sqlcachedependency功能 -dt 禁止對數據表采用sqlcachedependency功能 -lt 列出當前數據庫中有哪些表已經采用sqlcachedependency功能Sqlcachedependency的的原理簡單來說,是采用aspnet_regsql這個專門工具,預先設定要監視的數據庫和表,並在數據庫中增加一個專門的表,打開數據庫,會發現多了一個數據表aspnet_sqlcachetablesforchangenotification,如下圖: