当处理表单字段的自动完成功能时,用户键入的每个字符都会触发api调用以获得建议,您如何代理此调用来扩展?
- 由于跨域限制,直接从java脚本是不可能的,而且不安全,因为这会暴露api密钥。
- 将此移动到控制器或模型中,将导致对服务器端的大量查询,当活跃用户群达到一定限度时,这会给服务器端带来沉重的负担。
这种特性的标准行业惯例是什么?
您需要在客户端和服务器端都非常聪明。在任何地方使用大量缓存以避免额外的工作。使用CORS或JSONP。坦率地说,这需要大量的工作。并不是说Lucene/SOLR不是很有自动完成功能的引擎。顺便说一句:看看www.rockitsearch.com。它具有实现自动完成的所有基本功能。您所需要做的就是:在那里注册并导出数据。然后把你的小部件集成到你的网站上。
不确定您所说的"proxy this call"是什么意思,但一般来说:
-
可以使用JSONP进行跨域查询。但是你在客户端要付出性能损失
-
可以查询相同的域。由于主题非常普遍,所以没有单一的答案。如何扩展取决于你的基础设施。如果应用程序设计为水平扩展,则只需向服务器池中添加更多服务器即可进行扩展。使用亚马逊或Azure云服务非常简单。优化数据库查询和索引以使数据库快速响应也很重要。如果用户基数很大,你甚至可以拥有相同数据库的多个副本,以帮助提高性能。
不要过早地担心优化,因为您可能永远不会达到这一点。如果你得到的是一个好问题,在这种情况下,解决方案是微不足道的。