Php facebook如何保持即时自动建议的良好速度

Php facebook如何保持即时自动建议的良好速度,php,facebook,performance,performance-testing,database-performance,Php,Facebook,Performance,Performance Testing,Database Performance,Facebook具有在各种情况下显示即时自动建议结果的功能,例如:搜索、消息发送等 我认为我将功能定义为“自动建议”是正确的 如果一个用户有1000个朋友,并且他/她希望向一个朋友发送消息,那么facebook将在键入几个字符时建议他/她的名字 我的问题是:当从数据库中提取数据以找到朋友(或任何此类情况)然后处理时,FB使用哪种技术来保持自动建议的速度 是缓存变量还是什么?我想知道详细情况,因为我计划建立一个社交网站。我的脚本语言是php可能是类似或的数据结构 一个suggesttree像:。我

Facebook具有在各种情况下显示即时自动建议结果的功能,例如:搜索、消息发送等

我认为我将功能定义为“自动建议”是正确的

如果一个用户有1000个朋友,并且他/她希望向一个朋友发送消息,那么facebook将在键入几个字符时建议他/她的名字

我的问题是:当从数据库中提取数据以找到朋友(或任何此类情况)然后处理时,FB使用哪种技术来保持自动建议的速度


是缓存变量还是什么?我想知道详细情况,因为我计划建立一个社交网站。我的脚本语言是php

可能是类似或的数据结构


一个
suggesttree
像:。

我认为它的一个很好的部分不是那么多的PHP,尽管facebook被用来编译PHP

更重要的因素是数据库方面的事情。查询可能会尽可能地优化,只返回它需要的内容,缓存也可能会发挥作用,即用户的朋友已经被检索,很可能返回联系最频繁的朋友。此外,facebook拥有大量的数据库服务器,这只能帮助提高速度


希望有助于自动建议1000个甚至5000个条目并不难。您必须检索整个好友列表,并将其存储在索引javascript数组中(例如,我们使用第一个字母作为索引,因此好友['a']=[andrey,albert]),然后您实际上在内存中从一个小子集进行搜索

invite窗口也是以类似的方式构建的——您构建了一个名称的索引->dom元素,您离线执行dom操作——并且您只附加与搜索词匹配的人的结果

好友列表最有可能缓存在memcached中,facebook会尽可能早地进行预热缓存——它不会等待以任何方式使用好友列表才能将其放入memcache中。因此,它可以在memcached中检索,存储在本地存储中,并使用高效的JavaScript。这里没有涉及DB


另外,我不是在为facebook说话,而是为了一个类似的解决方案,我们设计了5000多个条目的快速自动建议/邀请对话框。

尝试接受令人满意的回答为什么负面排名?如果没有那么多php,那又怎样?@IstiaqueAhmed链接现在已经修复。。。与其说是PHP,不如说是数据库查询/设置。你甚至可以说,编写ajax文章并显示自动完成的javascript起到了一定的作用。如果我使用memcahced from,我应该还是需要使用这些算法?即使使用memcached,你也必须使用数据结构。Memcached只是用于缓存。当有太多的条目需要通过时,数据结构会有所帮助。当用户登录时,保持缓存条目(使用数据结构)。并且仅当用户尝试在设置为“自动建议”的文本框中键入时才使用它。i、 这与AJAX和PHP有关。这将有助于提高自动建议的性能(正如您所提到的:“保持自动建议的速度?”)-您构建了一个名称的索引->dom元素,您离线执行dom操作-“关于dom操作的更多信息?”?“离线怎么做?”IstiaqueAhmed。脱机我的意思是,不要将任何东西应用于浏览器中呈现的DOM,而是应用于内存中的副本,而不是“此处不涉及DB”-那么配置文件记录和这些东西存储在哪里?,“您必须检索整个好友列表,并将其存储在索引javascript数组中”-我应该什么时候做?用户需要在朋友列表中尝试的时间,即向朋友发送消息的时间?如果是这样,那么这是第一次,必须从DB中检索整个好友列表,然后将其保存在js数组中。因此,从第二次开始,而不是第一次,用户将获得增强的速度。我的想法正确吗?