0

在处理表单字段的自动完成功能时,用户键入的每个字符都会触发 api 调用以获取建议,您如何代理此调用以进行缩放?

  • 由于跨域限制,直接来自 java 脚本是不可能的,并且不安全,因为这会暴露 api 密钥。
  • 将其移至控制器或模型,会在服务器端产生大量查询,当活动用户群达到一定限制时,这会给它们带来沉重的负担。

这种功能的标准行业惯例是什么?

4

2 回答 2

1

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

于 2013-01-11T05:28:49.747 回答
0

不确定“代理此呼叫”是什么意思,但总的来说:

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

  2. 查询同一个域是可以的。由于主题非常笼统,因此没有单一的答案。您如何扩展取决于您的基础架构。如果应用程序设计为水平扩展,您只需向服务器池添加更多服务器即可扩展。使用 Amazon 或 Azure 云服务非常简单。优化数据库查询和索引以使数据库快速响应也很重要。如果用户群很大,您甚至可以拥有相同数据库的多个副本来帮助提高性能。

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

于 2013-01-11T03:40:41.183 回答