2

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

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

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

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

肯定有人遇到过这种情况。

4

2 回答 2

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 响应包含“Content-length”标头,以便客户端(您的 cfhttp 代码)知道每个请求何时完成。正如我所展示的那样,您将需要发出明确的“关闭”,以防止与后端的不必要的打开连接。

于 2012-03-09T18:56:29.460 回答
0

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

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

于 2012-03-09T17:51:52.550 回答