1

由于我没有错误,我不知道这是否是提出这个问题的正确地方,如果不是,请指向正确的论坛。反正...

我正在做一个社交网络项目,现在运行速度很慢,有些页面需要 5 到 15 秒才能加载。有一个“缓存”结构,但无论谁这样做,都没有使用已经Cache从 c# .net 构建,而是创建了一个静态List<object> 作为系统的缓存。即使tought是不正确的,我可以处理...

问题是,在每个页面请求上,我都必须从这个cache非常大的地方加载用户数据,而且用户结构也很大,所以我想知道,而不是每次请求页面时都从缓存中加载用户数据我将使用每个页面所需的最常用数据创建一些会话,例如照片、姓名、昵称、id,当我需要从用户那里加载不常见的任何其他类型的数据时,我会从缓存中请求它。 ..

我不知道这是否是正确的方法,而不是问这个问题的正确地方,但我真的需要非常糟糕地解决这个问题。所以我想从这里的专家那里得到一些建议。

4

2 回答 2

3

部分性能问题可能是需要扫描缓存中的项目。字典可能会更好,因为您可以按键检索项目。这是更接近本机缓存结构的实现。

会话不利于网站的可扩展性。如果您打算将其与 facebook 或其他东西一样大,那么使用会话进行缓存会杀死您

请参阅其他相关问题:

什么是在 Web 应用程序中存储大型临时“会话”数据的好方法

和另一个体面的问题

为什么在高流量网站中使用 Session 存储状态是个坏主意?

于 2012-06-12T13:56:07.677 回答
2

同意杰森+1

根据您的评论,用户对象有一个键(ID)。

如果你有钥匙,字典会快得多。此外,如果您的对象具有可以表示为 Int32 的自然键,则覆盖 gethash 和 equals。针对 10,000 的字典查找应该是毫秒。

键控集合听起来像您需要的。对于键控集合,其中一个属性 (ID) 是键。
键控集合

如果这是一个静态列表,我会通过数据库查找字典。因为你有一个单键字典会打败数据库。如果它是复合键,那么您将不得不使用数据库进行索引查找。

于 2012-06-12T14:41:16.203 回答