自动完成一个字段,设计为服务器端可扩展性



当处理表单字段的自动完成功能时,用户键入的每个字符都会触发api调用以获得建议,您如何代理此调用来扩展?

  • 由于跨域限制,直接从java脚本是不可能的,而且不安全,因为这会暴露api密钥。
  • 将此移动到控制器或模型中,将导致对服务器端的大量查询,当活跃用户群达到一定限度时,这会给服务器端带来沉重的负担。

这种特性的标准行业惯例是什么?

您需要在客户端和服务器端都非常聪明。在任何地方使用大量缓存以避免额外的工作。使用CORS或JSONP。坦率地说,这需要大量的工作。并不是说Lucene/SOLR不是很有自动完成功能的引擎。顺便说一句:看看www.rockitsearch.com。它具有实现自动完成的所有基本功能。您所需要做的就是:在那里注册并导出数据。然后把你的小部件集成到你的网站上。

不确定您所说的"proxy this call"是什么意思,但一般来说:

  1. 可以使用JSONP进行跨域查询。但是你在客户端要付出性能损失

  2. 可以查询相同的域。由于主题非常普遍,所以没有单一的答案。如何扩展取决于你的基础设施。如果应用程序设计为水平扩展,则只需向服务器池中添加更多服务器即可进行扩展。使用亚马逊或Azure云服务非常简单。优化数据库查询和索引以使数据库快速响应也很重要。如果用户基数很大,你甚至可以拥有相同数据库的多个副本,以帮助提高性能。

不要过早地担心优化,因为您可能永远不会达到这一点。如果你得到的是一个好问题,在这种情况下,解决方案是微不足道的。

最新更新