【发布时间】:2011-11-30 02:46:06
【问题描述】:
我正在我的网站上实现几个标记字段,其中包括使用 jquery UI 插件的自动完成选项。我一切正常,虽然小部件本身并不像我希望的那样健壮(例如,有没有办法使列表中的第一项始终突出显示),但它现在可以使用。
我的问题是处理服务器端对自动完成数据的请求。现在我正在使用 AJAX 来检索提供的输入项的潜在匹配项。我正在访问的表中有大约 10,000 条记录,我的想法是,与其不断查询该表,不如将这些记录的列表缓存在我服务器上的共享/静态属性中(我正在使用 ASP. NET MVC 和 SQL Server 后端)并改为查询该列表。我会每 4 小时左右刷新一次列表,以保持最新状态。
这个想法显然是为了减轻我的 SQL 服务器的压力并最大限度地提高自动完成下拉菜单的性能。 我最终想知道的是,在我的服务器上的内存中保留一个包含 10,000 个值的列表/数组是否是一种不好的做法;这里有已知的限制/阈值吗?我的服务器有 2GB 的 RAM,无论如何可能需要尽快升级。
任何建议将不胜感激。
感谢您的宝贵时间!
【问题讨论】:
-
您现在有性能问题吗?查询是不是很简单?像“asdf%”这样的东西?这个下拉菜单的点击频率是多少?听起来您正在优化性能而没有理由优化性能。
-
您是否同意几乎用户一生都不会搜索所有 10,000 个值?我建议每次用户搜索某个字母或短语时创建缓存。一周后,您的服务器可以创建一个“搜索最多”列表。与 10,000 条相比,缓存记录的数量可能只是小孩子。如果用户搜索一个稀有的关键字,他们需要等待更多的毫秒,以便服务器创建新的缓存。如此灵活的策略。
标签: jquery sql-server asp.net-mvc jquery-ui autocomplete