使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面

使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面

使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面
2015-08-14 白玉龙 dotNET跨平台
Donut Caching是缓存除了部分内容以外的整个页面的最好的方式,在它出现之前,我们使用“输出缓存”来缓存整个页面。
何时使用Donut Caching
假设你有一个应用程序中有像“主页”这种页面,它除了用户登录的用户名以外总是给用户呈现相同的或者很少变化的内容。这时你可能需要缓存大部分的内容。加入你使用“输出缓存”并应用一个VaryByParam UserID来做缓存处理,那么整个页面会为每个访问用户生成缓存,但是这当我们有很大量的登陆用户是就不是一个好的缓存方式了。
为了解决这种问题,Donut Caching提出了为所有用户只缓存一份副本,并且包含一小部分动态的内容,这一小部分动态的内容就像甜甜圈上的洞一样。
Donut Caching 的Nuget 包
使用Donut Caching之前,你需要在Visual studio中使用Nuget安装包,一般直接键入命令安装:
install-package MvcDonutCaching
安装完成后,你就可以通过在action或者controller上添加DonutOutputCache标签来控制缓存了,大多数OutputCache的标签都可以在DonutOutputCache中使用。
public class HomeController : Controller
{
[DonutOutputCache(Duration = 60,VaryByParam="username")]
public ActionResult Index(string username)
{
return View();
}
[DonutOutputCache(Duration=60)]
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
Donut Hole Caching
Donut Hole Caching和Donut Caching刚好相反,它用来缓存页面中的一小部分。
何时使用Donut Hole Caching
假设你有一个应用程序,它需要在每个页面里显示产品列表,那么这时以HTML的形式缓存一个产品列表就是很需要的了,Donut Hole Caching就是设计来处理这种情况的啦,ASP.NET MVC可以通过设置ChildActionOnly标签来支持子请求
[ChildActionOnly]
[DonutOutputCache(Duration=60)]
public ActionResult CategoryList()
{
return View(categoryService.GetCategories);
}
原文地址:http://www.dotnet-tricks.com/Tutorial/mvc/ODJa210113-Donut-Caching-and-Donut-Hole-Caching-with-Asp.Net-MVC-4.html
???企企csvcsvcsvcsvcsvcsv

posted on 2018-08-16 19:40 micwin 阅读(...) 评论(...)  编辑 收藏

转载于:https://www.cnblogs.com/chinanetwind/articles/9489416.html

使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面相关推荐

  1. ASP.NET MVC Caching with OutputCache

    ASP.NET MVC Caching with OutputCache [原文:http://tech.pro/tutorial/1434/aspnet-mvc-caching-with-outpu ...

  2. Visual Studio调试/加载速度很慢

    本文翻译自:Visual Studio debugging/loading very slow I'm at wits end. 我的智慧结束了. Visual Studio is typically ...

  3. (翻译)为你的MVC应用程序创建自定义视图引擎

    Creating your own MVC View Engine For MVC Application 原文链接:http://www.codeproject.com/Articles/29429 ...

  4. ASP.NET 2.0 中改进的缓存功能

    摘要:本文中,Stephen Walther 将重点介绍 ASP.NET 2.0 中新增的缓存功能,以及如何使用这些新功能改进 ASP.NET 应用程序的性能和可扩展性.(本文包含一些指向英文站点的链 ...

  5. Asp.net mvc 知多少(一)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  6. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

    1 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Microsoft Graph 服务针对一些主流的 ...

  7. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 原文:ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 ASP.Net MVC4+Memc ...

  8. [翻译]ASP.NET MVC4新特性之脚本压缩和合并

    2019独角兽企业重金招聘Python工程师标准>>> [翻译]ASP.NET MVC4新特性之脚本压缩和合并 目前主流浏览器限制客户端对同一域名只能同时发起6(PS:原文如此)个H ...

  9. 用CDNs和Expires改善网站性能(译文)

    已经有很多文章写过使用CDN(Content Delivery Network,内容交付网络)来实现静态内容(JQuery,images,CSS文件等)的优点了.(如果你还不熟悉CNDs,请看这篇Mi ...

最新文章

  1. 2021年人工智能数据采集标注行业四大趋势预测
  2. 人工智能将为传统制造业带来什么?
  3. php的$_SERVER['HOSTNAME']
  4. 基于Lucene/XML的站内全文检索解决方案:WebLucene 【转】
  5. 计算机Word应用程序,Word2007目录设置_计算机软件和应用程序_IT /计算机_信息
  6. PLSQL 设置日期格式为年月日不显示时分秒
  7. 为什么阿里巴巴建议集合初始化时,指定集合容量大小?
  8. 服务器显卡驱动修复,AMD发布2020年首个显卡驱动:一口气修复27个Bug
  9. python怎么学比较有技巧_学python必须知道的30个技巧
  10. POJ1256 Anagram(回溯法)
  11. python学习笔记 -- map() 操作可迭代序列
  12. java传参方式_Java里方法的参数传递方式
  13. Java 方法重载和覆盖重写的区别及注意事项
  14. h5 上 删除 交互_iH5高级教程:H5交互进阶,擦一擦效果
  15. Android系统手机为什么卡?
  16. linux系统 插优盘安装xvidcap,Linux屏幕录像软件xvidcap的安装方法
  17. 微软服务器无法删除不了,[图]Edge无法卸载 引发诸多用户强烈不满
  18. opencv与python环境搭建
  19. 胡凡算法笔记第二章摘录
  20. document.execCommand(undo, false, null);是什么意思

热门文章

  1. open***在Windows客户端权限那些事
  2. BASH SHELL 脚本基础
  3. kafka之四:Kafka集群搭建
  4. 使用敏捷回顾实施组织变革
  5. JPA基础(二)(转)
  6. 很全的SQL注入语句,有SQL漏洞的都可以拿下
  7. 开发js插件之所遇--02[DOM]
  8. 让Ubuntu自动登录到X
  9. Linux source命令(转)
  10. 重新复习基础草稿:可空类型