0

私は node.js (および一般的な JavaScript) を初めて使用するので、YQL を使用して単純な天気アプリを作成することで学習できると考えました。全体として、アプリは機能していますが、リクエストは非常に遅いです。json を返すのに約 6 秒かかります。一方、jQuery(getJSON) を使用して同じアプリを作成したところ、すぐに結果が得られました。

これはnode.jsのURLからjsonを解析する最良の方法ですか?

var request = require('request');

var url = 'http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20weather.forecast%20WHERE%20location%3D96720&format=json&diagnostics=true&callback='

request(url, function (error, response, body) {
    console.log(body);
})

フィードバックや提案をいただければ幸いです。

前もって感謝します。

4

1 に答える 1

0

ブラウザでその URL を開こうとしたところ、10 秒以上経ってもまだ読み込み中です。(更新: タイムアウトしました。)

私の推測では、Yahoo はブラウザが尊重するキャッシュ ヘッダーを設定しているため、最初のリクエストはおそらくキャッシュされ、その後のすべての jQuery リクエストはブラウザ キャッシュからほぼ瞬時にロードされます。request()にはローカル キャッシュがないため、毎回新しいコピーがダウンロードされるため、時間がかかります。

ブラウザのキャッシュをクリアしてみて、動作が速いかどうかを確認してください。最初のリクエストが遅い場合は、私の疑惑が裏付けられます。

更新: リクエスト速度に関する詳細情報は次のとおりです。

  • 自宅のインターネット接続: ほとんどがタイムアウトします。(Time Werner Cable / Road Runner; オハイオ州西部)
  • カリフォルニアの私の prgmr.com サーバー: 高速 - node.js で最初のリクエストに 1.151 秒かかり、その後はすべてのリクエストが 0.1 秒未満でした。ノード v0.8.21
  • herokuで実行されているnode.js Webプロキシ:高速-ラップトップにプロキシする時間を含めて0.28秒-http://www.nodeunblocker.com/proxy/http: //query.yahooapis.com/v1/public/ yql?q=SELECT%20 *%20FROM%20weather.forecast%20WHERE%20location%3D96720&format=json

そのため、場所に依存している可能性があると考え始めており、少なくともそのノードは遅くないと言えます。他に何もない場合でも、私の heroku サーバーを介して自由にリクエストをプロキシできます。これは無料のアカウントであるため、heroku が「アイドル状態」になると、次のリクエストが遅くなったり、エラーが発生したりすることに注意してください。

于 2013-03-29T21:23:49.930 に答える