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