0

我目前有一个 Web 应用程序,它在每个页面请求中从数据库中获取当前登录用户的用户数据。

这个 Web 应用程序可能有大约 30,000 个并发用户。

我的问题是最好缓存这个。例如在 C# 中使用System.Web.HttpRuntime.Cache.Add

或者这会削弱在内存中存储多达 30,000 个用户对象的服务器内存吗?

不缓存并在每次请求时从数据库中获取所需的数据会更好吗?

4

2 回答 2

1

如何根据可用内存设置一些有限的缓存。并在其上编写一个 LRU(最近最少使用)算法。它可以提高性能,特别是对于经常访问的用户。

于 2013-05-04T19:47:02.423 回答
1

在这种规模下,您需要一个明确的缓存和扩展策略。将缓存组合在一起与计划明确的策略不同。破解缓存将失败。

缓存高度依赖于数据。数据是否经常变化?您将拥有多少读写比率?您将如何扩展您的数据库?如果您的网络场中的服务器具有不同的数据值会发生什么?缓存一致性很重要吗?

您可能最终会得到几种不同类型的缓存:

  1. IIS 静态缓存
  2. ASP.Net 缓存
  3. 应用程序中的 LRU 缓存。
  4. 内存中的分布式缓存,例如 MemCacheD。
  5. 浏览器中的 HTTP 缓存。

此外,如果您提供静态数据(图像、CSS、Javascript 等),您需要与 CDN 集成以进行交付。使用 AWS S3 或 Azure 存储很容易做到这一点。

您还需要确保从一开始就计划如何向外扩展。您可能希望使用Elastic Bean StalkAzure 的 Websites Infrastruture部署到云提供商,例如 AWS 。

于 2013-05-06T22:24:37.863 回答