【问题标题】:How can I improve the performance of static data caching in ASP.NET?如何提高 ASP.NET 中静态数据缓存的性能?
【发布时间】:2013-09-25 14:34:37
【问题描述】:

我们的网站有大量常量列表,用于地址类型描述、状态、通用 cmets、布尔类型值、性别等字段......

我们希望能够在我们的所有页面或至少在给定正在加载的页面的相关列表中提供这些数据。

我们的架构由客户端 HTTP 和 Ajax 请求组成,这些请求点击我们的 MVC4 控制器操作,然后这些操作查询 Web API 并从数据库中检索数据等。

我们决定使用http://www.asp.net/web-forms/tutorials/data-access/caching-data/caching-data-at-application-startup-cs 以及一些客户端缓存。

还有什么我们可以做的,以便我们可以在客户端上以更少的开销获得这些值吗?我们是否应该缓存控制器方法(本质上是缓存 HttpRuntime.Cache 中的内容?

谢谢

【问题讨论】:

  • 我很好奇为什么有两票要关闭而没有任何解释。我真的想了解这些类型的缓存之间的主要区别是什么。如果这确实不是一个好问题,请解释原因,而不是仅仅试图关闭它。
  • @MikroDel 我已阅读常见问题解答,我认为这是一个有效的问题。
  • 嘿 edhedges,我认为您在这里确实有一个很好的问题,但您需要稍微集中注意力——也许将您的问题限制在您检查过的架构上,或者专注于您遇到的问题'试图解决而不是要求设计的优缺点列表。
  • 我会考虑修改一下。
  • 您是否在客户端使用 localStorage 进行缓存?您如何管理不同版本的缓存?我建议使用某种版本控制来避免碰到脏数据。

标签: asp.net-mvc-4 caching asp.net-web-api


【解决方案1】:

您对缓存的两个想法都是好主意,查找列表数据不经常更改或可以通过用户 ID 预测一致的列表例如都是缓存的候选者

通过客户端缓存,我无法判断您使用的是输出缓存还是其他东西,但我会在适当的地方查看输出缓存

    [OutputCache(Duration = int.MaxValue, VaryByParam = "id")]
    public ActionResult Details(int id)

关于输出缓存的两个小点

  1. 尝试使用 VaryByParam,这样可以确保在数据更改时缓存的输出不会过时
  2. 持续时间尽量选择合理的时间,否则只有应用池被回收才能刷新缓存

更多关于输出缓存的信息可以在这里找到http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs

【讨论】:

  • 我会试一试并报告。
  • 因此,如果我有两个参数的 VarByParam 和同一请求的持续时间 int.MaxValue ,方法中的代码会实际执行还是从缓存中获取值?我怎么知道我什么时候在调试?
  • 如果缓存规则计算结果为真,该方法将不会执行,我还没有找到一种方法来检查输出缓存是否使用调试器的缓存值集
猜你喜欢
  • 1970-01-01
  • 2011-09-24
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多