Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
C# 缓存填充下拉列表的结果?_C#_Asp.net_Caching - Fatal编程技术网

C# 缓存填充下拉列表的结果?

C# 缓存填充下拉列表的结果?,c#,asp.net,caching,C#,Asp.net,Caching,我有一堆下拉列表和其他控件,每次绑定到它们时都会填充相同的数据。问题是,每次我想绑定到下拉列表时,例如,我调用获取数据的方法,该方法反过来调用数据库。这显然是低效的,那么有什么解决办法呢。我可以将键值对存储在内部查找结构(可能是字典)中吗?如果基础数据发生更改,会发生什么情况?在这种情况下,一个可行的选择是检查数据是否已被更改,然后直接访问数据库并填充新的查找缓存吗?它显然不低效。如果调用次数太多,则数据太多,或者调用的数据太多。也许对你来说,从全局来看——如何缓存整个页面或页面的更大部分——会

我有一堆下拉列表和其他控件,每次绑定到它们时都会填充相同的数据。问题是,每次我想绑定到下拉列表时,例如,我调用获取数据的方法,该方法反过来调用数据库。这显然是低效的,那么有什么解决办法呢。我可以将键值对存储在内部查找结构(可能是字典)中吗?如果基础数据发生更改,会发生什么情况?在这种情况下,一个可行的选择是检查数据是否已被更改,然后直接访问数据库并填充新的查找缓存吗?

它显然不
低效。如果调用次数太多,则数据太多,或者调用的数据太多。也许对你来说,从全局来看——如何缓存整个页面或页面的更大部分——会更好。@Aristos——我的意思是,访问保存数据库表数据的内存中结构似乎比通过一次又一次地调用数据库服务器来重复访问表数据更有效。将它们放在用户控件上,然后简单地向该控件添加缓存如何?缓存和渲染它们不是更好吗?不管怎样,这就是我所做的。在另一种情况下,我将简单地考虑在字典中缓存一些非常常见的表,这些表几乎在每次调用中都会用到。一种方法是在应用程序中使用Ajax端点(MVC操作,或带有JSON输出的ASP.Net Web表单)。从设置控制器操作/Web上的ASP.net输出缓存。每次调用ajax端点来填充下拉列表时,都会得到缓存版本。为了跟踪更改,您需要根据正在使用的数据源对其进行配置。SQL server的传统方法是使用通知服务在任何更改时更新缓存。或者,您可以简单地等待缓存过期并自我更新。