CFHTTP应该用于拨打本地服务器吗?

时间:2012-11-26 13:31:23

标签: coldfusion load http-request cfhttp

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

使用CFHTTP拨打本地电话是否有任何缺点/缺点?如果有,是否有办法减轻这些?

3 个答案:

答案 0 :(得分:2)

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

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

我认为你需要详细说明你要在这里实现的目标。

答案 1 :(得分:1)

  

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

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

到目前为止,如果您尝试重新使用代码,我会考虑将您的身份验证放入cfc中。这是有益的,因为您可以在多个本地应用程序中使用它以及在需要时使用Web服务(从技术上讲,您通过使用cfhttp尝试执行此操作)。

将cfinlude中的流程包含在你之前做过的问题中有什么问题?测试证明包括相同的预生成的Lorem Ipsum文本每次都需要0 MS。

<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.

答案 2 :(得分:0)

您没有指定是否要回拨ColdFusion服务器本身或本地托管的其他服务。提供一个用例可能有助于扩展问题。

调用本地服务器的速度代价相对较小,在某些情况下可能很好,例如调用本地Solr服务器以获取搜索结果。然而,它可能比在CF内本地调用函数慢得多。

我要关注的是回调你正在执行ColdFusion的服务器。这可能表明事情可以更好地组织或安排。我过去一直这样做(作为一种廉价的,快乐的方式来运行后台任务),但是现在<cfthread>存在就不会这样做。