在上一篇<學習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