3

それが可能かどうかはわかりませんが、ファイル全体をCFHTTP.FileContentに入れる代わりに、cfhttpまたはその他の方法で選択した量のデータを読み取ることができるかどうかを尋ねたいと思います。

cfhttpを使用していて、リモートxmlファイルから最後の2行(約20行)だけを読み取り、一部のテキストファイル(約7行)から真ん中の2行を読み取りたいと考えています。現在、多くの時間(約15〜20秒)がかかるため、すべてのファイルを取得する代わりに、その特定のデータを読み取る方法はありますか?.cfmページの実行時間を短縮したいだけです。助言がありますか ???

4

3 に答える 3

5

うーん、リモートファイルの一部だけを取得する特別な方法ではありません。

あなたは毎回それをしなければなりませんか?バックグラウンドでファイルをフェッチしてローカルに書き込み、実際の受信リクエストでそれらのファイルを読み取ることができますか?リモートファイルの読み取りを着信要求と非同期にしますか?

そうでない場合で、CF8 +を使用している場合は、CFTHREADを使用して、並行して実行するさまざまなリクエストをスレッド化できます。http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content= Tags_t_04.html

最後に「参加」アクションを使用して、すべてのスレッドが完了するのを待つことができます。

編集:

これは、CFThreadを使用してCFHTTP要求を並列化するためのBenNadelによる優れたチュートリアルです。

http://www.bennadel.com/blog/749-Learning-ColdFusion-8-CFThread-Part-II-Parallel-Threads.htm

ただし、他にも何かがあります。

27〜30のシーケンシャルhttpリクエストは20〜30秒かかることはありません。実際には1〜2秒もかからないはずです。そのため、ここで他の深刻な問題が発生している可能性があります。

于 2010-04-27T19:53:39.863 に答える
4

HTTP には、そのような方法でファイルを読み取る機能がありません。これは ColdFusion とは関係ありません。

CFHTTP の method="HEAD" を使用して初めて実行するときは、スマート キャッシングを使用して時間をいくらか短縮できますが、時間がかかります。

ページのローカル コピーはありますか?

  • いいえ、CFHTTP method="GET" を使用して取得して保存します
  • はい、CFHTTP method="HEAD" を使用してタイムスタンプを確認し、キャッシュされたバージョンと比較します。キャッシュが新しい場合はそれを使用し、そうでない場合は CFHTTP method="GET" を使用して、必要なファイルを取得して解析します。

method="HEAD" は、ファイル全体ではなく、http ヘッダーのみを取得するため、処理速度がわずかに向上します。いずれにせよ、ほぼ 30 件のファイル リクエストを行っているため、どちらを切り取っても瞬時にはなりません。

于 2010-04-27T20:33:47.073 に答える
0

CFにURLパラメータでそのファイルのチャンクのみを提供するように依頼するのはどうですか?

XMLなので、xmlSearch()を使用して結果のみを返すことができると思いますか?

テキストファイルの場合、uはstartlineとnumOfLinesを渡して、それらの行のみを文字列として返すことができますか?

于 2010-04-27T21:35:51.967 に答える