我目前有一个 Web 应用程序,它在每个页面请求中从数据库中获取当前登录用户的用户数据。
这个 Web 应用程序可能有大约 30,000 个并发用户。
我的问题是最好缓存这个。例如在 C# 中使用System.Web.HttpRuntime.Cache.Add
或者这会削弱在内存中存储多达 30,000 个用户对象的服务器内存吗?
不缓存并在每次请求时从数据库中获取所需的数据会更好吗?
我目前有一个 Web 应用程序,它在每个页面请求中从数据库中获取当前登录用户的用户数据。
这个 Web 应用程序可能有大约 30,000 个并发用户。
我的问题是最好缓存这个。例如在 C# 中使用System.Web.HttpRuntime.Cache.Add
或者这会削弱在内存中存储多达 30,000 个用户对象的服务器内存吗?
不缓存并在每次请求时从数据库中获取所需的数据会更好吗?
如何根据可用内存设置一些有限的缓存。并在其上编写一个 LRU(最近最少使用)算法。它可以提高性能,特别是对于经常访问的用户。
在这种规模下,您需要一个明确的缓存和扩展策略。将缓存组合在一起与计划明确的策略不同。破解缓存将失败。
缓存高度依赖于数据。数据是否经常变化?您将拥有多少读写比率?您将如何扩展您的数据库?如果您的网络场中的服务器具有不同的数据值会发生什么?缓存一致性很重要吗?
您可能最终会得到几种不同类型的缓存:
此外,如果您提供静态数据(图像、CSS、Javascript 等),您需要与 CDN 集成以进行交付。使用 AWS S3 或 Azure 存储很容易做到这一点。
您还需要确保从一开始就计划如何向外扩展。您可能希望使用Elastic Bean Stalk或Azure 的 Websites Infrastruture部署到云提供商,例如 AWS 。