我不知道它是否可能,但只是想询问我们是否可以cfhttp或任何其他东西来读取选定数量的数据而不是将整个文件放在CFHTTP.FileContent中。
我正在使用cfhttp并且只想从远程xml文件中读取最后两行(大约20个)并从一些文本文件中读取中间两行(大约7个)。有没有什么方法可以读取特定数据而不是获取所有文件,因为它现在花了很多时间(约15-20秒)。我只想减少.cfm页面的运行时间。 任何建议???
答案 0 :(得分:5)
嗯,实际上没有任何特殊方法可以获得部分远程文件。
你每次都必须这样做吗?你能在后台获取文件,在本地写它们,并让你的实际传入请求只读取这些文件吗?使远程文件的读取与传入请求异步?
如果没有,并且您正在使用CF8 +,您可以使用CFTHREAD来线程化并行运行的各种请求:http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_t_04.html
您最后可以使用“join”操作来等待所有线程完成。
编辑:
这是Ben Nadel关于使用CFThread并行化CFHTTP请求的精彩教程:
http://www.bennadel.com/blog/749-Learning-ColdFusion-8-CFThread-Part-II-Parallel-Threads.htm
但还有别的东西:
27-30个连续的http请求不应该花费20-30秒。它真的不应该需要1-2秒 - 所以你可能会遇到一些严重的其他问题。
答案 1 :(得分:3)
HTTP无法以这种方式读取文件。这与ColdFusion无关。
你可以使用一些智能缓存来减少时间,但是第一次使用CFHTTP的方法=“HEAD”运行它时会花费更长的时间。
您是否拥有该页面的本地副本?
method =“HEAD”只会抓取http标头而不是整个文件,这样可以加快速度。无论哪种方式,你都要发出近30个文件请求,所以无论你是什么方式都不会立即这样做。
答案 2 :(得分:0)
请问CF只用URL params服务那个文件块?
因为它是XML,我猜你可以使用xmlSearch()并只返回结果吗?
对于文本文件,你可以传入startline& numOfLines并仅将这些行返回为字符串?