百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

学习MVC之租房网站(十二)-缓存和静态页面

wptr33 2025-03-14 21:27 14 浏览

在上一篇<学习MVC之租房网站(十一)-定时任务和云存储>学习了Quartz的使用、发邮件,并将通过UEditor上传的图片保存到云存储。在项目的最后,再学习优化网站性能的一些技术:缓存和页面静态化。

使用缓存可以降低数据库的压力,而使用页面静态化则可以降低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还可以将数据持久化到硬盘。在学习应用时,也是在使用前启动其控制台:

使用方式和Memcached类似,首先安装ServiceStack.Redis,存取代码为:


二 页面静态化

缓存可以降低数据库读取的压力,但在网站收到访问请求后,仍然每次都要跑一遍取得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

相关推荐

每天一个编程技巧!掌握这7个神技,代码效率飙升200%

“同事6点下班,你却为改BUG加班到凌晨?不是你不努力,而是没掌握‘偷懒’的艺术!本文揭秘谷歌工程师私藏的7个编程神技,每天1分钟,让你的代码从‘能用’变‘逆天’。文末附《Python高效代码模板》,...

Git重置到某个历史节点(Sourcetree工具)

前言Sourcetree回滚提交和重置当前分支到此次提交的区别?回滚提交是指将改动的代码提交到本地仓库,但未推送到远端仓库的时候。...

git工作区、暂存区、本地仓库、远程仓库的区别和联系

很多程序员天天写代码,提交代码,拉取代码,对git操作非常熟练,但是对git的原理并不甚了解,借助豆包AI,写个文章总结一下。Git的四个核心区域(工作区、暂存区、本地仓库、远程仓库)是版本控制的核...

解锁人生新剧本的密钥:学会让往事退场

开篇:敦煌莫高窟的千年启示在莫高窟321窟的《降魔变》壁画前,讲解员指着斑驳色彩说:"画师刻意保留了历代修补痕迹,因为真正的传承不是定格,而是流动。"就像我们的人生剧本,精彩章节永远...

Reset local repository branch to be just like remote repository HEAD

技术背景在使用Git进行版本控制时,有时会遇到本地分支与远程分支不一致的情况。可能是因为误操作、多人协作时远程分支被更新等原因。这时就需要将本地分支重置为与远程分支的...

Git恢复至之前版本(git恢复到pull之前的版本)

让程序回到提交前的样子:两种解决方法:回退(reset)、反做(revert)方法一:gitreset...

如何将文件重置或回退到特定版本(怎么让文件回到初始状态)

技术背景在使用Git进行版本控制时,经常会遇到需要将文件回退到特定版本的情况。可能是因为当前版本出现了错误,或者想要恢复到之前某个稳定的版本。Git提供了多种方式来实现这一需求。...

git如何正确回滚代码(git命令回滚代码)

方法一,删除远程分支再提交①首先两步保证当前工作区是干净的,并且和远程分支代码一致$gitcocurrentBranch$gitpullorigincurrentBranch$gi...

[git]撤销的相关命令:reset、revert、checkout

基本概念如果不清晰上面的四个概念,请查看廖老师的git教程这里我多说几句:最开始我使用git的时候,我并不明白我为什么写完代码要用git的一些列指令把我的修改存起来。后来用多了,也就明白了为什么。gi...

利用shell脚本将Mysql错误日志保存到数据库中

说明:利用shell脚本将MYSQL的错误日志提取并保存到数据库中步骤:1)创建数据库,创建表CreatedatabaseMysqlCenter;UseMysqlCenter;CREATET...

MySQL 9.3 引入增强的JavaScript支持

MySQL,这一广泛采用的开源关系型数据库管理系统(RDBMS),发布了其9.x系列的第三个更新版本——9.3版,带来了多项新功能。...

python 连接 mysql 数据库(python连接MySQL数据库案例)

用PyMySQL包来连接Python和MySQL。在使用前需要先通过pip来安装PyMySQL包:在windows系统中打开cmd,输入pipinstallPyMySQL ...

mysql导入导出命令(mysql 导入命令)

mysql导入导出命令mysqldump命令的输入是在bin目录下.1.导出整个数据库  mysqldump-u用户名-p数据库名>导出的文件名  mysqldump-uw...

MySQL-SQL介绍(mysql sqlyog)

介绍结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同...

MySQL 误删除数据恢复全攻略:基于 Binlog 的实战指南

在MySQL的世界里,二进制日志(Binlog)就是我们的"时光机"。它默默记录着数据库的每一个重要变更,就像一位忠实的史官,为我们在数据灾难中提供最后的救命稻草。本文将带您深入掌握如...