我希望从 ColdFusion 应用程序中大量使用 RESTful API。
我不是 CF 专家,但我预计重复的 cfhttp 调用将成为瓶颈,因为我相信每次调用都会导致建立连接、发送请求、接收响应和断开连接。
我很好奇 - 有没有办法维护可以发送请求的连接池以避免重复建立/拆除?
ColdFusion 服务器是否提供了我不知道的设施(我们使用的是 CF 8)或者我可以编写一个可以维护池的 Java 自定义标签?
肯定有人遇到过这种情况。
我希望从 ColdFusion 应用程序中大量使用 RESTful API。
我不是 CF 专家,但我预计重复的 cfhttp 调用将成为瓶颈,因为我相信每次调用都会导致建立连接、发送请求、接收响应和断开连接。
我很好奇 - 有没有办法维护可以发送请求的连接池以避免重复建立/拆除?
ColdFusion 服务器是否提供了我不知道的设施(我们使用的是 CF 8)或者我可以编写一个可以维护池的 Java 自定义标签?
肯定有人遇到过这种情况。
我认为您实际上可以通过在 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 代码)知道每个请求何时完成。正如我所展示的那样,您将需要发出明确的“关闭”,以防止与后端的不必要的打开连接。
不幸的是,我认为答案是“不”,特别是因为您的要求。这不是 REST 的工作方式。并且限制是 API 方面,而不是 ColdFusion 问题。
你可以做类似的事情,假设你也可以控制 API 端,但它不会是 REST。