Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何让我的应用程序在facebook和linkedin上快速运行?_Ruby On Rails_Facebook_Performance_Rest_Linkedin - Fatal编程技术网

Ruby on rails 如何让我的应用程序在facebook和linkedin上快速运行?

Ruby on rails 如何让我的应用程序在facebook和linkedin上快速运行?,ruby-on-rails,facebook,performance,rest,linkedin,Ruby On Rails,Facebook,Performance,Rest,Linkedin,请耐心等待,我将提供一个简短的背景: 我的应用程序从Facebook和LinkedIn检索用户数据。 两者都有非常严格的使用条款。具体来说,他们没有 允许在我的应用程序上保存用户数据。 Facebook允许缓存。链接甚至不允许缓存。 最简单的解决办法是在需要时随时给Facebook/LinkedIn打电话 来自他们的数据。问题是,如果我需要,这会变得太慢 大量数据,例如100个用户的个人资料。批处理调用使事情变得复杂 更好,但它们有局限性,我不确定这种方法是否可行 规模 所以问题是如何让我的应用

请耐心等待,我将提供一个简短的背景:

我的应用程序从Facebook和LinkedIn检索用户数据。 两者都有非常严格的使用条款。具体来说,他们没有 允许在我的应用程序上保存用户数据。 Facebook允许缓存。链接甚至不允许缓存。 最简单的解决办法是在需要时随时给Facebook/LinkedIn打电话 来自他们的数据。问题是,如果我需要,这会变得太慢 大量数据,例如100个用户的个人资料。批处理调用使事情变得复杂 更好,但它们有局限性,我不确定这种方法是否可行 规模 所以问题是如何让我的应用程序在使用Facebook/LinkedIn的数据时快速运行

如果你能分享你的经验,或者有一个使用Facebook/LinkedIn大量数据的网站的例子,我很想听听

具体地说,它们不允许在我的应用程序上保存用户数据。Facebook允许缓存。链接甚至不允许缓存

那不是真的…:

B.仅在允许的情况下存储内容,3。性能缓存:

为了改善会员体验,您可以缓存LinkedIn内容,但在原始请求后的24小时内不得缓存LinkedIn内容。这种有限的缓存权限仅出于性能原因

具体地说,它们不允许在我的应用程序上保存用户数据。Facebook允许缓存。链接甚至不允许缓存

那不是真的…:

B.仅在允许的情况下存储内容,3。性能缓存:

为了改善会员体验,您可以缓存LinkedIn内容,但在原始请求后的24小时内不得缓存LinkedIn内容。这种有限的缓存权限仅出于性能原因


当您谈到使应用程序快速时,请注意快速可能意味着高吞吐量或低延迟,两者之间有很大的区别。最好为每个单独用户的服务延迟和吞吐量设置性能目标,即每个用户在单位时间内能够服务的用户数

如果从FB/LinkedIn获取数据是吞吐量的瓶颈

使用批处理请求。 如果相同的数据可以重复使用,请尽可能多地缓存,并尽可能长地缓存。 确保应用程序能够并行发出多个请求。由于通过网络发送查询是一项高延迟操作,因此通过这种方式可以获得大量吞吐量。 如果从FB/LinkedIn获取数据是延迟的瓶颈

同样,在本地缓存尽可能多的数据。 如果可以猜测哪些数据将很快被需要,请预先获取它。例如:如果您的用户必须填写一个大表单然后提交,但是表单中有一个关键字段标识您将需要的数据,那么您可以使用AJAX让页面在填写完该字段后立即将其发送回,而不是等待整个表单提交! 如果您需要多个数据段来为单个用户提供服务,请不要使用多个顺序请求来获取它们——要么使用批处理请求,要么使用多个并行请求,也许两者都可以。 当有必要让用户等待时,分散他们的注意力——尽可能缩短等待时间。 如果页面的某些部分可以在没有FB/LinkedIn数据的情况下呈现,请先将这些部分发送回,并在数据准备好后使用AJAX调用填充其他部分。 如果您必须从FB/LinkedIn获得数据XYZ才能为用户提供服务,并且单个API请求的延迟为N秒,并且您为每个用户提供服务的目标最长时间小于N秒,那么您实现目标的唯一可能方式就是预取数据。也许当你看到用户的第一个页面请求(比如主页)出现时,你就可以开始将该用户所需的所有数据加载到缓存中(如果还没有)


无论您做什么,我建议您将FB/LinkedIn数据访问代码封装在数据访问层中。缓存应该严格地发生在数据访问层内部——应用程序代码不需要知道缓存。无论您是否使用批处理调用,以及是否并行发出多个调用,都是一个实现细节,应该严格保存在数据访问层中。

当您谈论使应用程序快速时,请注意快速可能意味着高吞吐量或低延迟,两者之间有很大区别。最好为每个单独用户的服务延迟和吞吐量设置性能目标,即每个用户在单位时间内能够服务的用户数

如果从FB/LinkedIn获取数据是吞吐量的瓶颈

使用批处理请求。 如果相同的数据可以重复使用,请尽可能多地缓存,并尽可能长地缓存。 确保您的应用程序能够发出许多请求 同时。由于通过网络发送查询是一项高延迟操作,因此通过这种方式可以获得大量吞吐量。 如果从FB/LinkedIn获取数据是延迟的瓶颈

同样,在本地缓存尽可能多的数据。 如果可以猜测哪些数据将很快被需要,请预先获取它。例如:如果您的用户必须填写一个大表单然后提交,但是表单中有一个关键字段标识您将需要的数据,那么您可以使用AJAX让页面在填写完该字段后立即将其发送回,而不是等待整个表单提交! 如果您需要多个数据段来为单个用户提供服务,请不要使用多个顺序请求来获取它们——要么使用批处理请求,要么使用多个并行请求,也许两者都可以。 当有必要让用户等待时,分散他们的注意力——尽可能缩短等待时间。 如果页面的某些部分可以在没有FB/LinkedIn数据的情况下呈现,请先将这些部分发送回,并在数据准备好后使用AJAX调用填充其他部分。 如果您必须从FB/LinkedIn获得数据XYZ才能为用户提供服务,并且单个API请求的延迟为N秒,并且您为每个用户提供服务的目标最长时间小于N秒,那么您实现目标的唯一可能方式就是预取数据。也许当你看到用户的第一个页面请求(比如主页)出现时,你就可以开始将该用户所需的所有数据加载到缓存中(如果还没有)


无论您做什么,我建议您将FB/LinkedIn数据访问代码封装在数据访问层中。缓存应该严格地发生在数据访问层内部——应用程序代码不需要知道缓存。无论是否使用批处理调用,以及是否并行发出多个调用,都是一个实现细节,应该严格保存在数据访问层中。

感谢您指出这一点。显然,他们一周前更改了使用条款:。但是,即使使用缓存,我也有一个延迟问题,因为在我第一次获取数据时,用户必须等待。感谢您指出这一点。显然,他们一周前更改了使用条款:。但是,即使使用缓存,我也会遇到延迟问题,因为在我第一次获取数据时,用户必须等待。您的延迟目标是什么?你测量过一次对LinkedIn API的调用的延迟吗?是的,对facebook,而不是LinkedIn。对于批处理调用,我得到了最多4秒的值。这大概是我能负担得起的最高水平了……再次阅读你的问题,似乎你的问题可能是,当你需要打很多电话从FB/LinkedIn获取大量数据时,延迟太高了。如果是这样,并且一个批处理调用是不够的,那么您可以简单地并行发出多个批处理调用。如果单个调用的延迟是可接受的,那么多个并行调用的延迟也将是可接受的。您是否可以预测需要哪些数据?在这种情况下,对于延迟,您所能做到的绝对最佳值就是单个API调用的延迟。使用足够多的并行批处理调用,您可以并行下载所有需要的数据,并优化处理下载数据的代码,这样就不会成为瓶颈。还考虑首先加载页面的框架,然后使用Ajax异步填写配置文件列表。在配置文件加载之前,您可以使用时髦的小微调器或其他动画。您的延迟目标是什么?你测量过一次对LinkedIn API的调用的延迟吗?是的,对facebook,而不是LinkedIn。对于批处理调用,我得到了最多4秒的值。这大概是我能负担得起的最高水平了……再次阅读你的问题,似乎你的问题可能是,当你需要打很多电话从FB/LinkedIn获取大量数据时,延迟太高了。如果是这样,并且一个批处理调用是不够的,那么您可以简单地并行发出多个批处理调用。如果单个调用的延迟是可接受的,那么多个并行调用的延迟也将是可接受的。您是否可以预测需要哪些数据?在这种情况下,对于延迟,您所能做到的绝对最佳值就是单个API调用的延迟。使用足够多的并行批处理调用,您可以并行下载所有需要的数据,并优化处理下载数据的代码,这样就不会成为瓶颈。还考虑首先加载页面的框架,然后使用Ajax异步填写配置文件列表。可以使用时髦的小微调器或其他动画,直到加载轮廓。