asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Asp.net mvc 知多少(九)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

系列导航http://www.jianshu.com/p/2ebfcc4bf897">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 = datetiR_894_11845@e.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个网页。

s.jianshu.io/upload_images/2799767-452f15c75343e4e8.png?imageMogr2/auto-orient/Strip%7CimageView2/2/w/1240">

为了解决这个问题,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();
 }
}

大佬总结

以上是大佬教程为你收集整理的Asp.net mvc 知多少(九)全部内容,希望文章能够帮你解决Asp.net mvc 知多少(九)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: