3

我们的网站有大量的常量列表,例如地址类型描述、状态、通用注释、布尔类型值、性别等……

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

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

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

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

谢谢

4

1 回答 1

3

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

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

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

关于输出缓存的两个小点

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

有关输出缓存的更多信息,请参见http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs

于 2013-11-27T09:56:42.457 回答