我不知道它是否可能,但只想问我们是否可以使用 cfhttp 或任何其他东西来读取选定数量的数据,而不是将整个文件放入 CFHTTP.FileContent 中。
我正在使用 cfhttp 并且只想从远程 xml 文件(大约 20 个)中读取最后两行,并从一些文本文件(大约 7 个)中读取中间两行。有什么办法可以让我只读取特定数据而不是获取所有文件,因为它现在需要很多时间(大约 15-20 秒)。我只想减少 .cfm 页面的运行时间。有什么建议么 ???
我不知道它是否可能,但只想问我们是否可以使用 cfhttp 或任何其他东西来读取选定数量的数据,而不是将整个文件放入 CFHTTP.FileContent 中。
我正在使用 cfhttp 并且只想从远程 xml 文件(大约 20 个)中读取最后两行,并从一些文本文件(大约 7 个)中读取中间两行。有什么办法可以让我只读取特定数据而不是获取所有文件,因为它现在需要很多时间(大约 15-20 秒)。我只想减少 .cfm 页面的运行时间。有什么建议么 ???
嗯,并不是任何特殊的方式来获取远程文件的一部分。
你必须每次都这样做吗?您能否在后台获取文件,将它们写入本地,并让您的实际传入请求仅读取这些文件?使远程文件的读取与传入请求异步?
如果没有,并且您使用的是 CF8+,则可以使用 CFTHREAD 线程出并行运行的各种请求:http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content= Tags_t_04.html
您可以使用最后的“加入”操作来等待所有线程完成。
编辑:
这是 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 秒 - 所以你可能会在这里遇到一些严重的其他问题。
HTTP 不具备以这种方式读取文件的能力。这与 ColdFusion 无关。
您可以使用一些智能缓存来减少时间,但在第一次使用 CFHTTP 的 method="HEAD" 时会花费更长的时间,但事实并非如此。
您有该页面的本地副本吗?
method="HEAD" 只会抓取http头而不是整个文件,这会稍微加快速度。无论哪种方式,您都会发出近 30 个文件请求,因此无论您如何削减它,这都不会是即时的。
让 CF 只提供带有 URL 参数的文件块怎么样?
既然是 XML,我猜你可以使用 xmlSearch() 并且只返回结果?
至于文本文件,您可以传入 startline 和 numOfLines 并仅将这些行作为字符串返回?