Coldfusion 是否应使用CFHTTP进行本地服务器调用?

Coldfusion 是否应使用CFHTTP进行本地服务器调用?,coldfusion,load,http-request,cfhttp,Coldfusion,Load,Http Request,Cfhttp,我听说指向本地服务器的CFHTTP调用可能会给用户造成额外的延迟。由于这是一个HTTP请求,在我看来,任何延迟都可以忽略不计——尽管我对网络/系统和负载平衡不太了解 使用CFHTTP进行本地调用是否有任何缺点/缺点?如果有,是否有减轻这些缺点/缺点的方法?您没有指定是回拨到ColdFusion服务器本身还是本地托管的其他服务。这可能有助于稍微扩展问题,以提供一个用例 调用本地服务器的速度损失相对较小,在某些情况下,这可能没问题,例如,调用本地Solr服务器以获取搜索结果。但是,它可能比在CF中本

我听说指向本地服务器的CFHTTP调用可能会给用户造成额外的延迟。由于这是一个HTTP请求,在我看来,任何延迟都可以忽略不计——尽管我对网络/系统和负载平衡不太了解


使用CFHTTP进行本地调用是否有任何缺点/缺点?如果有,是否有减轻这些缺点/缺点的方法?

您没有指定是回拨到ColdFusion服务器本身还是本地托管的其他服务。这可能有助于稍微扩展问题,以提供一个用例

调用本地服务器的速度损失相对较小,在某些情况下,这可能没问题,例如,调用本地Solr服务器以获取搜索结果。但是,它可能比在CF中本地调用函数慢得多


我所关心的是调用您正在执行ColdFusion的服务器。这可能是一个迹象,表明事情可以更好地组织或安排。我以前做过这件事(作为运行后台任务的一种廉价的、令人愉快的方式),但现在既然
已经存在,我就不这么做了。

您试图用这些HTTP调用做什么?如果通过HTTP获取的内容在本地文件系统上,那么实际上使用文件系统(fileRead()、include等)而不是网络来获取它们将更为方便

也就是说,如果您确实希望出于任何原因执行请求(在某些情况下这是完全合法的),那么我不认为性能开销会令人担忧。虽然我不想在每个
onRequestStart()
上都做这种事情

我认为你需要详细说明你打算在这里实现什么

在我看来,任何延误都可以忽略不计

也许,这取决于您的流量和您遇到的任何其他延迟问题。我做了一个简单的测试,从同一个CF服务器获取了5段预生成的Lorem Ipsum虚拟文本。结果花了15到47毫秒,正如我说的,这取决于你决定它是否可以忽略不计。我个人认为它有点高,但从用户的角度来看,它在我的环境中并不明显

作为缓解,如果你试图重新使用代码,我会考虑把你的身份验证到一个CFC。这是有益的,因为您可以在多个本地应用程序中使用它,也可以在需要时在web服务中使用它(从技术上讲,这就是您尝试使用cfhttp所做的)

如您之前所说,将流程包括在cfinclude中有什么问题?测试证明,包含相同的预生成Lorem Ipsum文本每次需要0毫秒

<cfset start = getTickCount()>
<cfhttp url="http://myServer.com/test/lipsum.cfm" method="get" >
<cfset end = getTickCount()-start>
<cfoutput>it took #end# MS to get the Lipsum.</cfoutput><br />
<cfset start = getTickCount()>
    <!-- <cfinclude template="lipsum.cfm"> -->
<cfset end = getTickCount()-start>
<cfoutput>it took #end# MS to include the Lipsum.</cfoutput>

it took 43 MS to get the Lipsum.
it took 0 MS to include the Lipsum.

用了#end#MS才得到Lipsum。
用了#end#MS才包括Lipsum。 用了43毫秒才得到口红。 包含Lipsum需要0毫秒。
作为一个用例,我们有一个遗留代码,可以让用户登录,然后执行cflocation重定向到提供的URL,并定义错误代码或成功代码。我们希望在不编辑代码的情况下使用此代码,因此我们正在执行CFHTTP,并将重定向设置为转到我们自己的处理页面,该页面将返回响应。此登录代码通常通过cfinclude使用,因此它在CF服务器本身上-作为登录代码,它也仅在登录时调用,而不是在每次页面加载时调用。谢谢,我添加了一条注释以进一步解释这种情况。我同意的理想解决方案仍然是将我们正在使用的代码重建为一个函数,但由于时间限制,我们现在必须按原样使用代码。如果可以使用cfinclude成功调用代码,为什么不简单地这样做呢?听起来你好像在试图修复一些没有坏掉的东西。在上面添加了一条评论和我们的确切场景。正如在对巴尼尔的回复中所说的那样,我同意纳入肯定会更可取。在目前的情况下,如果开销很小,那么我们可以按照目前的情况使用它,目标是以后替换它。