系統緩存有什麼好處呢?舉個簡單的例子,你想經過網頁查詢某些數據,而這些數據並不是實時變化,或者變化的時間是有期限的。例如查詢一些歷史數據。那 麼每一個用戶每次查的數據都是同樣的。若是不設置緩存,ASP.NET也會根據每一個用戶的請求重複查詢n次,這就增長了沒必要要的開銷。因此,可能的狀況下盡 量使用緩存,從內存中返回數據的速度始終比去數據庫查的速度快,於是能夠大大提供應用程序的性能。畢竟如今內存很是便宜,用空間換取時間效率應該是很是劃 算的。尤爲是對耗時比較長的、須要創建網絡連接的數據庫查詢操做等。數據庫
緩存功能是大型網站設計一個很重要的部分。由數據庫驅動的Web應用程序,若是須要改善其性能,最好的方法是使用緩存功能。瀏覽器
系統緩存全解析1:系統緩存的概述緩存
系統緩存全解析2:頁面輸出緩存服務器
系統緩存全解析3:頁面局部緩存網絡
系統緩存全解析4:應用程序數據緩存分佈式
系統緩存全解析5:文件緩存依賴性能
系統緩存全解析6:數據庫緩存依賴網站
系統緩存全解析7:第三方分佈式緩存解決方案 Memcached和Cachemanspa
15.4.1 緩存的分類設計
從分佈上來看,咱們能夠歸納爲客戶端緩存和服務器端緩存。如圖所示:
客戶端緩存—— 這點你們都有直觀的印象。好比你去一個新的網站,第一次可能要花一陣子時間才能載入整個頁面。而之後再去呢,時間就會大大的縮短,緣由就在於這個客戶端緩 存。如今的瀏覽器都比較智能,它會在客戶機器的硬盤上保留許多靜態的文件,好比各類gif,jpeg文件等等。等之後再去的時候,它會盡可能使用本地緩存裏 面的文件。只有服務器端的文件更新了,或是緩存裏面的文件過時了,它纔會再次從服務器端下載這些東西。不少時候是IE替咱們作了這件事情。
服務器端緩存—— 有些東西無法或是不宜在客戶端緩存,那麼咱們只好在服務器端想一想辦法了。服務器端緩存從性質上看,又能夠分爲兩種。
(1)靜態文件緩存
好多頁面是靜態的,不多改動,那麼這種文件最適於做靜態緩存。如今的IIS 6.0這部份內容是直接存放在Kernel的內存中,由HTTP.SYS直接管理。因爲它在Kernel Space,因此它的性能很是的高。用戶的請求若是在緩存裏面,那麼HTTP.SYS直接將內容發送到networkdriver上去,不須要像之前那樣 從IIS的User space的內存copy到Kernel中,而後再發送到TCP/IP stack上。Kernellevel cache幾乎是如今高性能Web server的一個必不可少的特性。
(2)動態緩存
動態緩存是比較有難度的。由於你在緩存的時候要時刻注意一個問題,那就是緩存的內容是否是已通過時了。由於內容過期了可能會有很嚴重的後果。好比網上股市的網站。你給別人提供的價格是過期的,那人家非砍了你不可。緩存如何發現本身是否是過期就是一個很是複雜的問題。
在ASP.NET中,常見的動態緩存主要有如下幾種手段:
Ø 傳統緩存方式
Ø 頁面輸出緩存。
Ø 頁面局部緩存。
Ø 利用.NET提供的System.Web.Caching 緩存。
Ø 緩存依賴。
15.4.2 傳統緩存方式
好比將可重複利用的東西放到Application或是Session中去保存。
Session["Style"] = val; Application["Count"] =0;