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

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

我找到了一篇文章,讲解了如何在客户端存储数据,链接为:HTML5客户端存储技术

但我希望找到一个适用于不支持HTML5的浏览器的解决方案。哪种方法最好?为什么?

你为什么不使用类似于Select2的东西呢?[链接] https://select2.github.io/ - Satyaki Chatterjee
2个回答

0

我认为使用HTML5本地存储的方法是缓存客户端数据大于100kb的最佳且唯一可能的方法,但是除非您将对象存储为JSON字符串到本地存储中,否则反序列化会很困难。如果本地存储或HTML5存在问题,您始终可以使用cookie,但是,如果它真的有3MB(无法想象下拉菜单的大小),这将不可能,因为cookie只能存储最大约5KB。


Cookie的限制是4KB。Cookie不适合在此处使用,因为它们的作用是存储用户偏好、配置设置等信息,而不是实际数据本身。 - Nikhil Vartak
Cookies用于存储文本,Cookie不知道您在其中存储的用户首选项和配置设置仍然是文本,也许它不会像通常使用的那样被使用,但这并不意味着您不能存储除您提到的文本之外的其他文本。 - COLD TOLD

0

如所述,数据超过3mb且不经常更改。我建议做两件事,
1. 不要在浏览器上存储这么多的数据。使用服务器端缓存对象。如果可能,请尝试使用缓存依赖项。
2. 使用自动完成下拉框等类似的东西。始终将前30个(或更多)数据绑定到下拉列表中,以减少页面负载。如果数据在前30个中不可见,则自动完成将有助于搜索适当的数据。

如果这个想法有帮助,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接