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

Autocomplete 自动完成一个字段,设计用于服务器端可扩展性,autocomplete,Autocomplete,当处理表单字段的自动完成功能时,用户键入的每个字符都会触发api调用以获取建议,您如何代理此调用以进行缩放 由于跨域限制,直接从java脚本是不可能的,并且不安全,因为这将公开api密钥 将其移动到控制器或模型时,将向服务器端引发大量查询,当活动用户群达到一定限制时,这些查询将给他们带来沉重负担 这种功能的标准行业惯例是什么 不确定“代理此呼叫”是什么意思,但一般来说: 您可以使用JSONP进行跨域查询。但你要为客户支付绩效罚款 可以查询同一个域。由于主题非常笼统,所以没有单一的答案。扩展方

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

  • 由于跨域限制,直接从java脚本是不可能的,并且不安全,因为这将公开api密钥
  • 将其移动到控制器或模型时,将向服务器端引发大量查询,当活动用户群达到一定限制时,这些查询将给他们带来沉重负担
这种功能的标准行业惯例是什么

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

  • 您可以使用JSONP进行跨域查询。但你要为客户支付绩效罚款

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


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

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

    我指的是代理,javascript向controller发送查询,然后controller向第三方服务发送API调用。我们将首先研究Jsonp解决方案。非常感谢。