ASP.NET緩存全解析1:緩存的概述

作者: 李天平  來源: 博客園  發布時間: 2010-07-28 16:59  閱讀: 17760 次  推薦: 7   原文鏈接   [收藏]  

  ASP.NET緩存全解析文章索引

  有時候總聽到網友說網站運行好慢,不知如何是好;有時候也總見到一些朋友寫的網站功能看起來非常好,但訪問性能卻極其的差。沒有“勤儉節約”的意識,勢必會造成“鋪張浪費”。如何應對這種情況,充分利用系統緩存則是首要之道。

  系統緩存有什么好處呢?舉個簡單的例子,你想通過網頁查詢某些數據,而這些數據并非實時變化,或者變化的時間是有期限的。例如查詢一些歷史數據。那么每個用戶每次查的數據都是一樣的。如果不設置緩存,ASP.NET也會根據每個用戶的請求重復查詢n次,這就增加了不必要的開銷。所以,可能的情況下盡量使用緩存,從內存中返回數據的速度始終比去數據庫查的速度快,因而可以大大提供應用程序的性能。畢竟現在內存非常便宜,用空間換取時間效率應該是非常劃算的。尤其是對耗時比較長的、需要建立網絡鏈接的數據庫查詢操作等。 

  緩存功能是大型網站設計一個很重要的部分。由數據庫驅動的Web應用程序,如果需要改善其性能,最好的方法是使用緩存功能。

    緩存的分類

  從分布上來看,我們可以概括為客戶端緩存和服務器端緩存。

  客戶端緩存——這點大家都有直觀的印象。比如你去一個新的網站,第一次可能要花一陣子時間才能載入整個頁面。而以后再去呢,時間就會大大的縮短,原因就在于這個客戶端緩存。現在的瀏覽器都比較智能,它會在客戶機器的硬盤上保留許多靜態的文件,比如各種gif,jpeg文件等等。等以后再去的時候,它會盡量使用本地緩存里面的文件。只有服務器端的文件更新了,或是緩存里面的文件過期了,它才會再次從服務器端下載這些東西。很多時候是IE替我們做了這件事情。

  服務器端緩存——有些東西沒法或是不宜在客戶端緩存,那么我們只好在服務器端想想辦法了。服務器端緩存從性質上看,又可以分為兩種。

  (1)、靜態文件緩存

  好多頁面是靜態的,很少改動,那么這種文件最適于作靜態緩存。現在的IIS 6.0這部分內容是直接存放在Kernel的內存中,由HTTP.SYS直接管理。由于它在Kernel Space,所以它的性能非常的高。用戶的請求如果在緩存里面,那么HTTP.SYS直接將內容發送到network driver上去,不需要像以前那樣從IISUser space的內存copyKernel中,然后再發送到TCP/IP stack上。Kernel level cache幾乎是現在高性能Web server的一個必不可少的特性。

  (2)、動態緩存

  動態緩存是比較有難度的。因為你在緩存的時候要時刻注意一個問題,那就是緩存的內容是不是已經過時了。因為內容過時了可能會有很嚴重的后果。比如網上買賣股票的網站。你給別人提供的價格是過時的,那人家非砍了你不可。緩存如何發現自己是不是過時就是一個非常復雜的問題。

  在ASP.NET中,常見的動態緩存主要有以下幾種手段:

  Ø  傳統緩存方式

  Ø  頁面輸出緩存。

  Ø  頁面局部緩存。

  Ø  利用.NET提供的System.Web.Caching 緩存。

  Ø  緩存依賴。

  傳統緩存方式

  比如將可重復利用的東西放到Application或是Session中去保存。

 

 
Session["Style"] = val;
Application["Count"] = 0;

 

 

  (選自《亮劍.NET:.NET深入體驗與實戰精要》15章)

7
0
 
標簽:ASP.NET 緩存
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()