Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在会话中存储数据与从数据库中检索到达时间?_Asp.net_Database_Visual Studio 2010_Oracle_Devexpress - Fatal编程技术网

Asp.net 在会话中存储数据与从数据库中检索到达时间?

Asp.net 在会话中存储数据与从数据库中检索到达时间?,asp.net,database,visual-studio-2010,oracle,devexpress,Asp.net,Database,Visual Studio 2010,Oracle,Devexpress,我只是在学习ASP.net,同时也在为同一领域的朋友制作一个web应用程序 现在,在我的应用程序中,有一个表可以将用户映射到公司的分支机构,还有一个表可以将分支机构映射到客户。当用户登录时,我会发出一个查询以获取他/她有权访问的分支的列表,然后再发出一个查询以获取他负责的所有客户的列表。这种情况经常发生,并且在许多页面上都是必需的 此外,我正在使用DevExpress的GridView和GridViewLookUp工具。如果您熟悉它们,它们就像ASP.net中的GridView,每次对显示的条目

我只是在学习ASP.net,同时也在为同一领域的朋友制作一个web应用程序

现在,在我的应用程序中,有一个表可以将用户映射到公司的分支机构,还有一个表可以将分支机构映射到客户。当用户登录时,我会发出一个查询以获取他/她有权访问的分支的列表,然后再发出一个查询以获取他负责的所有客户的列表。这种情况经常发生,并且在许多页面上都是必需的

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

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


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

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


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

哪个更快,而不会占用数据库服务器太多资源,也不会占用太多内存来存储所有信息?