Asp.net mvc 知多少(九)

本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问http://www.dotnettricks.com/free-ebooks自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。
由于个人技术水平和英文水平也是有限的,因此错误在所难免,希望大家多多留言指正。
系列导航
Asp.net mvc 知多少(一)
Asp.net mvc 知多少(二)
Asp.net mvc 知多少(三)
Asp.net mvc 知多少(四)
Asp.net mvc 知多少(五)
Asp.net mvc 知多少(六)
Asp.net mvc 知多少(七)
Asp.net mvc 知多少(八)
Asp.net mvc 知多少(九)
Asp.net mvc 知多少(十)

本节主要讲解缓存的使用

Q87. 什么是caching(缓存)以及什么时候使用缓存?
Ans. Caching 是高性能web应用程序的一个很重要的方面。Caching是一种提高web应用程序性能的高效方法。Caching 提供了存储经常访问的数据以及重用这些数据的一种方式。
何时使用缓存:

  • 对经常访问的内容使用缓存;
  • 避免缓存对用户唯一的内容;
  • 避免缓存不经常访问的内容;
  • 使用VaryByCustom方法去缓存基于自定义的请求类型(比如cookie,role,theme,browser等等)的多个版本的内容;
  • 使用64位的Windows Server和Sql Server进行高效缓存;
  • 如果使用database进行缓存,需要确保数据库服务器拥有充足的内存,否则会适得其反而降低性能。
  • 如果要缓存经常变化但又经常访问的动态内容,可以定义一个短暂的缓存过期时间来实现。

Q88. 缓存的好处是什么?
Ans. 主要有以下几点:

  • 减少寄宿服务器的往返调用(round-trips)。
  • 如果缓存在客户端或是代理,将减少对服务器的请求,减少带宽。
  • 减少对数据库服务器的往返调用(round-trips)。
  • 当内容缓存在web服务器,能够减轻对数据库的请求。
  • 减少网络带宽。
  • 避免了重新生成可重用内容的时耗。
  • 提高性能
  • 因为缓存减少了round-trips, network traffic(网络带宽),并避免了生成可重用内容的时耗,所以对性能有巨大的提高。

Q89. 什么是output caching(输出缓存)?
Ans. OutputCache过滤器允许你缓存一个action的输出数据。默认该过滤器只缓存60s。60s后,ASP.NET MVC会重新执行action并再次缓存输出。

class HomeController : Controller
{
 [OutputCache(Duration = 20, VaryByParam = "none")]
 public ActionResult Index()
 {
 ViewBag.Message = DateTime.Now.ToString();
 return View();
 }
}

Index() action的输出将会被缓存20s。

Output Caching Location(输出缓存的路径)
默认内容被缓存在3个地方:web server(web 服务器),proxy server(代理服务器),user's browser(用户浏览器)。
你可以通过修改OutputCache特性的Location参数来控制内容缓存的地方。Location可以设置为:AnyClientDownstreamServerNoneServerAndClient
默认,Location参数设置为Any可以适用于大部分场景。但是有些时候你可能需要对缓存数据有更多的控制。


Q90. ASP.NET MVC中什么是Donut caching 和 Donut hole caching?
Ans. Donut caching 缓存除了部分内容以外的整个页面。在介绍Donut caching之前,我们使用Output Caching(输出缓存)来缓存整个页面。
何时使用Donut caching?
假设你有一个web应用程序中有一些页面,比如主页,主页展示的内容对所有用户来说都是一样的除了用户的登陆信息比如用户名。如果你想通过OutputCache(VaryByParam=UserID)来为所有用户缓存主页,那么整个页面将会为每个用户分别缓存。这将不是一个好的实践,因为如果同时又1000个登陆的用户,就将会缓存1000个网页。

为了解决这个问题,Donut Caching 被引入,它为所有用户缓存一份整个页面除了部分动态内容。这个动态部分实际上类似于缓存内容上的一个洞(像甜甜圈)。
Donut caching 非常适用于对大部分内容很少改变但又有部分内容动态改变的页面进行缓存。
Donut Hole caching
Donut Hole Caching和Donut Caching刚好相反,它用来缓存页面中的一小部分。

何时使用Donut Hole caching?
假设你有一个web应用程序,它需要在每个页面里显示产品列表,那么这时以HTML的形式缓存一个产品列表就是很需要的了,Donut Hole Caching就是设计来处理这种情况。
ASP.NET MVC 通知在Child Action上使用OutputCache来支持Donut Hole caching:

class HomeController : Controller
{
 [ChildActionOnly]
 [OutputCache(Duration = 60)]
 public ActionResult CategoriesList()
 {
 // Get categories list from the database and
 // pass it to the child view
 ViewBag.Categories = GetCategories();
 return View();
 }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容