0

我只是在学习 ASP.net,同时也在为一个朋友制作一个网络应用程序。

现在,在我的应用程序中,有一个表将用户映射到公司的分支机构,另一个表将分支机构映射到客户。当用户登录时,我进行查询以获取他/她可以访问的分支机构列表,然后另一个查询以获取他负责的所有客户列表。这发生了很多次,并且在许多页面上都需要。

另外,我正在使用 DevExpress 的 GridView 和 GridViewLookUp 工具。如果您熟悉它们,它们就像 ASP.net 中的 GridView 一样,并且每次对显示的条目进行排序或选择不同的页面来查看条目时都会导致回发。基本上,我想知道我必须多次触发上述两个查询。

用户通常负责平均 100-150 个客户端。

所以我想知道的是,对于这么高的数字,我是否应该检索所有客户端名称并将它们存储在会话中,这样只要用户登录就不必再次连接到数据库?还是我应该保持原样,让它每次都从数据库中找到客户?

4

1 回答 1

1

由于此数据特定于登录用户,因此您可以将其保存在Session变量中。另一个替代选项是在您的 UI/业务逻辑和数据访问之间实现一个Cache层。每天查询一次(或您定义的间隔缓存持续时间)并将其保存在Cache. 下次当您的 UI 需要时,从那里获取它。如果数据为空,则表示缓存已过期。再次查询并存储。缓存数据对所有用户都是全局的,而会话数据特定于该用户会话。

如果您有这么多请求进入,与将其保存在缓存中相比,在会话中为每个请求保留 150 个客户端对象的副本(它有多大?)似乎有点糟糕。所以我认为你应该选择缓存层选项。

于 2012-07-14T23:39:28.687 回答