學習MVC之租房網站(十二)-緩存和靜態頁面

在上一篇<學習MVC之租房網站(十一)-定時任務和雲存儲>學習了Quartz的使用、發郵件,並將經過UEditor上傳的圖片保存到雲存儲。在項目的最後,再學習優化網站性能的一些技術:緩存和頁面靜態化。html

使用緩存能夠下降數據庫的壓力,而使用頁面靜態化則能夠下降Web服務器的壓力。數據庫

 

一 緩存緩存

ASP.NET下可用的緩存爲System.Web.Caching.Cache,保存在服務器內存中,不適用於服務器集羣,雖然也用沒用過集羣,但如今的主流都使用NoSQL數據庫來作緩存,典型的有Redis和Memcached,這類緩存技術支持集羣部署,並且若是使用獨立的服務器,即可不受主服務器宕機的影響,Redis更是支持把數據持久化到硬盤。Redis和Memcached的應用須要專門學習實踐,這兒只是代替普通Cache來掌握基本的使用。服務器

 

a) Memcached基礎性能

Memcached最適合的操做系統是Linux,在VS中能夠從Nuget安裝EnyimMemcached來使用。首先要讓Memcached運行起來,在生產環境會做爲服務運行,在學習階段只是每次使用前啓動控制檯就好了。學習

須要緩存的對象要被標記爲Serializable,並且與該對象關聯的對象也須要標記可序列化。存取方法爲:優化

 

 

b) Redis基礎網站

Redis使用Json格式的序列化方式,因此不須要像Memcached那樣標記Serializable,並且Memcached只能在內存保存數據,Redis還能夠將數據持久化到硬盤。在學習應用時,也是在使用前啓動其控制檯:this

 

 

使用方式和Memcached相似,首先安裝ServiceStack.Redis,存取代碼爲:spa

 

 


 

 

二 頁面靜態化

緩存能夠下降數據庫讀取的壓力,但在網站收到訪問請求後,仍然每次都要跑一遍取得Model、渲染View的過程,而經過將頁面靜態化能夠規避這個過程形成的壓力。好比用戶訪問ID爲249的房源頁面時,本來是要經過House/Detail/249實時渲染,但如今就能夠直接訪問對應的249.html文件,這其實是將渲染頁面的動做提早到了新增249房源的時刻,在249房源保存到系統時隨即生成其html頁面,之後服務器只須要直接返回這個頁面,運算量大大減小,並且相比之前的實時渲染,靜態頁面只須要渲染一次(不包括修改數據後的從新靜態化)。

新增房源後,渲染靜態化頁面的代碼爲:

 

調用方法:string html = MVCHelper.RenderViewToString(this.ControllerContext, @"~/Views/House/StaticIndex.cshtml", model);

除了新增,每次修改房源信息,也要從新生成靜態頁面,以保證信息的同步。

 

注:

課程內容來自如鵬網(www.rupeng.com),專一於大學生就業的在線教育平臺;

ASP.NET MVC課程 http://www.rupeng.com/News/9/640.shtml

相關文章
相關標籤/搜索