如何限制通过CFHTTP检索的数据?

我正在使用cfhttp来获取文档并解析内容,如下所示:

<cfhttp
        method="GET"
        url="#url.strURL#"
        resolveurl="true"
        useragent="#CGI.http_user_agent#"
        result="objGet"
        timeout="60"
        charset="utf-8"
    />

但是,一些文件相当大。 我不需要得到整个事情 - 这可能需要很长时间。

有什么办法可以在加载X字节后停止运行cfhttp ? 或者设置一个限制,例如多少钱。

感谢帮助。


如果目标服务器支持它,则可以使用Range http标头:

<cfhttp
        method="GET"
        url="#url.strURL#"
        resolveurl="true"
        useragent="#CGI.http_user_agent#"
        result="objGet"
        timeout="60"
        charset="utf-8"/>
   <cfhttpparam type="header" name="Range" value="bytes=0-499" />
 </cfhttp>

Apache和IIS支持这个,所以对于静态内容你可能会很幸运。 动态内容会更棘手......

...我刚刚尝试过这个,通过Apache提供CFM,看起来没有用。 我怀疑,如果Apache / IIS正在提供静态文件,那么它可以安全地从您请求的文档中发回一定范围的字节,因为它可以读取文件。 如果请求是由CF / ASP / JSP / whatever生成的,那么它将由Appliation来响应请求中的Range:标头。 在我的情况下,我仍然得到整个文档,因为我的应用程序没有看到Range标题。

我还应该提到,可以在Java中完成你所要做的事情,因为你可以更好地控制正在发生的事情,但是你必须自己写一些东西或者使用一个替代的HTTP客户端库那里。 这取决于我认为功能对你来说有多重要。 如果文档非常大,那么您可能需要使用cfhttp的file属性来避免将整个响应写入内存,这可能会导致崩溃。

链接地址: http://www.djcxy.com/p/5277.html

上一篇: How to limit data retrieved via CFHTTP?

下一篇: google analytics, hitting it from coldfusion server cfhttp