Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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# 客户端缓存具有大量数据的DropDownList?_C#_Asp.net_.net_Caching_Gridview - Fatal编程技术网

C# 客户端缓存具有大量数据的DropDownList?

C# 客户端缓存具有大量数据的DropDownList?,c#,asp.net,.net,caching,gridview,C#,Asp.net,.net,Caching,Gridview,场景:我有一个GridView,在rowbound事件绑定的每一行中都有DropDownList。这些数据来自数据库,不会经常更改。(说它每周变化一次)。根据我对数据库的理解,它的命中次数与GridView中的行数相同。我可以做的一件事是使用ViewState或session来最小化数据库点击。但是,下拉数据仍然会一次又一次地传输到客户端。这是巨大的数据(3MB)。 即使我使用ajax调用,仍然会有大量数据被传输。 快速互联网连接可能不是问题,但慢速互联网连接将导致速度减慢。我想知道我是否可以在

场景:我有一个GridView,在rowbound事件绑定的每一行中都有DropDownList。这些数据来自数据库,不会经常更改。(说它每周变化一次)。根据我对数据库的理解,它的命中次数与GridView中的行数相同。我可以做的一件事是使用ViewState或session来最小化数据库点击。但是,下拉数据仍然会一次又一次地传输到客户端。这是巨大的数据(3MB)。 即使我使用ajax调用,仍然会有大量数据被传输。 快速互联网连接可能不是问题,但慢速互联网连接将导致速度减慢。我想知道我是否可以在客户端保存下拉数据并从那里绑定它

我读到一篇文章,解释了如何将数据存储在客户端中


但是我想要一个解决方案,它可以在不支持HTML5的浏览器上运行。我认为,在客户端缓存大于100kb的数据时,使用HTML5本地存储的方法是最好的,也是唯一可能的方法,但如果不将对象作为json字符串存储到本地存储,则很难进行反序列化,由于本地存储或HTML5是一个问题,您可以始终使用cookie,但是,如果它真的是3mb(无法想象该下拉列表的大小),这将是不可能的,因为cookie最多可以存储5KB,正如所说的,数据超过3mb也不会频繁更改。我建议做两件事,
1.不要在浏览器上存储这么多数据。使用服务器端缓存对象。如果可能,请尝试使用缓存依赖项
2.使用自动完成下拉列表之类的东西。始终将前30个(或更多)数据绑定到下拉列表,以减少页面上的负载。如果数据在前30名中不可见,则自动完成将有助于搜索适当的数据


让我知道这个想法是否有用。

Cookie限制为4KB。cookie不适合此处,因为它们用于存储用户首选项、配置设置等信息,而不是实际数据本身。cookie用于存储文本,cookie不知道您在其中存储了什么用户首选项,配置设置仍然是文本,也许它不会像通常使用的那样被使用,但这并不意味着你不能存储除你提到的以外的文本。为什么你不使用类似select2[link]的东西呢?