我希望从ColdFusion应用程序中大量使用RESTful API。
我不是CF专家,但我预计重复的cfhttp调用将成为瓶颈,因为我认为每个调用都会导致建立连接,发送请求,收到响应并断开连接。
我很好奇 - 有没有办法维护一个连接池,可以发送请求以避免重复建立/拆除?
ColdFusion服务器是否提供了我不知道的设施(我们使用的是CF 8),还是可以编写一个可以维护池的java自定义标签?
当然其他人遇到了这个。
答案 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代码)知道每个请求何时完成。您将希望发出一个明确的“关闭”,因为我已经证明可以防止不需要打开到后端的连接。