從散布上來看,我們可以概括為客戶端緩存和服務器端緩存,以下圖所示:
客戶端緩存 這點大家都有直觀的印象。比如你去1個新的網(wǎng)站,第1次可能要花1陣子時間才能載入全部頁面。而以后再去呢,時間就會大大的縮短,緣由就在于這個客戶端緩存。現(xiàn)在的閱讀器都比較智能,它會在客戶機器的硬盤上保存許多靜態(tài)的文件,比如各種gif,jpg文件等等。等以后再去的時候,它會盡可能使用本地緩存里面的文件。只有服務器真?zhèn)€文件更新了,或是緩存里面的文件過期了,它才會從服務器端下載這些東西。很多時候是IE替我們做了這些事情。
服務器端緩存 有些東西沒法或是不宜在客戶端緩存,那末我們只好在服務器端想一想辦法了。服務器端緩存從性質上看,又可以分為兩種。
靜態(tài)文件緩存 好多頁面時靜態(tài)的,很少改動,那末這類文件最適于做靜態(tài)緩存。現(xiàn)在的IIS6.0這部份內容是直接寄存在kernel的內存中,由HTTP.SYS直接收理。由于它在Kernel Space,所以它的性能非常的高。用戶的要求如果在緩存里面,那末HTTP.SYS直接將內容發(fā)送到netword driver上去,不需要像之前那樣從IIS的User space的內存copy到Kernel中,然后再發(fā)送到TCP/IP stack上。Kernel level cache幾近是現(xiàn)在高性能Web server的1個必不可少的特性。
動態(tài)緩存 動態(tài)緩存是比較有難度的。由于你在緩存的時候要時刻注意1個問題,那就是緩存的內容是否是已過時了。由于內容過時了可能會有很嚴重的后果。
在Asp.net中,常見的動態(tài)緩存主要有以下幾種手段:
傳統(tǒng)緩存方式
頁面輸出緩存
頁面局部緩存
利用.NET提供的System.Web.Caching緩存
緩存依賴
接下來的博文將以.net mvc框架為例介紹各種緩存方式