在ColdFusion中维护出站TCP连接池

时间:2012-03-09 17:04:00

标签: coldfusion connection pooling

我希望从ColdFusion应用程序中大量使用RESTful API。

我不是CF专家,但我预计重复的cfhttp调用将成为瓶颈,因为我认为每个调用都会导致建立连接,发送请求,收到响应并断开连接。

我很好奇 - 有没有办法维护一个连接池,可以发送请求以避免重复建立/拆除?

ColdFusion服务器是否提供了我不知道的设施(我们使用的是CF 8),还是可以编写一个可以维护池的java自定义标签?

当然其他人遇到了这个。

2 个答案:

答案 0 :(得分:0)

不幸的是,我认为答案是," no",特别是因为您的要求。这不是REST的工作方式;限制是API方面,而不是ColdFusion问题。

你可以做类似的事情,假设你也可以控制API的结尾,但它不会是REST。

答案 1 :(得分:0)

我认为您实际上可以通过在cfhttp调用中使用“Keep-Alive”请求标头来实现此目的。例如:

<cfloop from="1" to="50" index="i">
  <cfhttp url="http://mysite.com/getPage.cfm?i=#i#" method="get">
    <cfif i LT 50>
    <CFHTTPPARAM type="HEADER" name="Connection" value="Keep-Alive">
    <cfelse>
    <CFHTTPPARAM type="HEADER" name="Connection" value="close">
    </cfif>
  </cfhttp>

  <cfdump var="#cfhttp.filecontent#">

</cfloop>

我没有测试过这个,但理论上它应该在你做出每个请求时保持与后端的连接打开(假设后端允许这个并且连接之间的延迟没有触发超时) )。您应该确保您的API响应包含“内容长度”标头,以便客户端(您的cfhttp代码)知道每个请求何时完成。您将希望发出一个明确的“关闭”,因为我已经证明可以防止不需要打开到后端的连接。