在上一篇<学习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